思路一:
把两个有序列表利用归并排序法,合并成一个新的列表,进而求新列表的中位数
思路二:
两个有序列表的中位数,转化为----->求解两个列表中第K小的数字。(K为两个列表长度的一半)
# 思路一
def merge_list(list1, list2):
# 默认list1,list2都是列表
list3 = []
while list1 and list2:
if list1[0] < list2[0]:
list3.append(list1[0])
del list1[0]
else:
list3.append(list2[0])
del list2[0]
if list1:
list3.extend(list1)
if list2:
list3.extend(list2)
return list3
list1 = [2, 4, 9]
list2 = [1, 4, 6]
c = merge_list(list1, list2)
new_len = len(c)
if new_len % 2 == 1:
print(c[int((new_len + 1) / 2)])
else:
mid = int(new_len / 2)
res = (c[mid] + c[mid + 1] )/ 2
print(res)