【中位数问题】两个已升序数组确定其中位数

题目描述: 

现有两个已升序排列的数组和,其规模分别为和,试设计一个渐近时间复杂度为(log( + ))的算法去确定和的所有元素的中位数。 

伪码:

【中位数问题】两个已升序数组确定其中位数_第1张图片

伪码解释: 

我们把求中位数的问题转化为求两数组第k小元的问题,同时运用了二分查找来简化时间复杂度。看了网上的视频好像也没有讲得特别清晰,我们还是要结合图去看,因为时间紧张,这里就附上我的草图:

二分查找主要运用的特性就是如果两数组的第k/2个元素都相等,那很明显你们的第k/2个元素都是我的第k小元,但是如果两者不等,那肯定较小的那个和它前面比它小的元素都在我的前k个元素中,我直接把你删去然后让k缩小相同的值,好比找第7个元素,你前3个元素肯定都不是第7个元素,那我直接删去你然后我找剩下数组中的第4个元素即可

【中位数问题】两个已升序数组确定其中位数_第2张图片这就是我草图的全部,我们现在看第一列:
【中位数问题】两个已升序数组确定其中位数_第3张图片

其实这三步就是我们递归的思路,当我们的k逐级减少到1时,就会到达递归出口。 

你可能感兴趣的:(算法)