背景
输入两个有序数列
a = [a1, a2, ..., an], 其中a1<a2<....<an
b = [b1, b2, ...bn], 其中b1<b2<....<bn
寻找a与b合并后数列的中位数
解题思路
(1)计算ab列表合并后中位数的index
>>>if (len(a)+len(b))%2==0:#偶数
... index = [(len(a)+len(b))/2-1, (len(a)+len(b))/2]
...else:#奇数
... index = [(len(a)+len(b))-1]/2
(4)len_a = 11, len_b = 8, index = 9(从0开始),所以是第10个数
a | 1 | 2 | 5 | 7 | 8 | 9 | 12 | 14 | 16 | 17 | 18 | ||||||||
b | 3 | 4 | 6 | 10 | 11 | 13 | 15 | 19 |
(5)将问题转化为在合并列表中寻找第10小的元素
(6)将10/2 = 5(如果是奇数的话,向下取整),取ab列表中最小的第5位数