首先说好,我这种方法,是最容易想到,但是可能是最降智的想法了
这里要讲一下归并排序的归并操作。
如果大家懂得归并排序是如何把很多个有序的小数组,归并成大数组的话。这道题就迎刃而解了。
首先构造一个空数组作为result
对于两个数组,构造两个指针,比较两个数大小,小的那个数进入result数组,然后,指针后移,再进行比较
直至,有一个数组全部都被放进result里,那么另一个数组的剩余元素(本来就是有序的)直接放到result里的尾部就可以了
废话不说,先上代码:
'''
leetcode
两个有序数组合并成一个有序数组
'''
def two_list_sqrt(array1,array2):
result=[]
i=0
j=0
while i<len(array1)and j<len(array2):
if array1[i]<=array2[j]:
result.append(array1[i])
i = i + 1
else:
result.append(array2[j])
j += 1
result.append(array1[i:])
result.append(array2[j:])
return result
if __name__=='__main__':
array1=[1,5,6,7,9,14,25,36]
array2=[2,4,7,9,16,26,37,84]
print(two_list_sqrt(array1,array2))
这个程序有个bug,大家一运行就知道了,欢迎大佬对我的程序进行改进!