一个长度为L(L≥1)的升序序列s,处在第[L/2]个位置的数称为s的中位数。例如,若序列sl=(11,13,15,17,19),则s1的中位数是15,两个序列的中位数是含它们所有元素的升序序列的中位数。例如,若s2=(2,4,6,8,20),则S1和s2

admin2014-12-08  33

问题 一个长度为L(L≥1)的升序序列s,处在第[L/2]个位置的数称为s的中位数。例如,若序列sl=(11,13,15,17,19),则s1的中位数是15,两个序列的中位数是含它们所有元素的升序序列的中位数。例如,若s2=(2,4,6,8,20),则S1和s2的中位数是11。现在有两个等长升序序列A和B,试设计一个在时间和空间两方面都尽可能高效的算法,找出两个序列A和B的中位数。要求:
给出算法的基本设计思想。

选项

答案算法的基本设计思想如下。分别求出序列A和B的中位数,设为a和b,求序列A和B的中位数过程如下:①若a=b,则a或b即为所求中位数,算法结束。②若ab,则舍弃序列A中较大的一半,同时舍弃序列B中较小的一半,要求舍弃的长度相等。在保留的两个升序序列中,重复过程1)、2)、3),直到两个序列中只含一个元素时为止,较小者为所求的中位数。

解析
转载请注明原文地址:https://kaotiyun.com/show/q4xi777K
0

最新回复(0)