defmerge(A, B):'''
合并两个已排序的数组
Args:
list A:已排序数组A
list B:已排序数组B
Returns:
list result: 已合并的有序数组
'''
i,j = 0,0
result = []
while i<len(A) and j<len(B):
if A[i]<B[j]:
result.append(A[i])
i += 1else:
result.append(B[j])
j += 1
result += A[i:]
result += B[j:]
return result
defmerge_sort(A):'''
归并排序
思路:
不断递归, 直到只有一个数值, 归并排序可以不要将一个数与其他所有的额数对照, 减少操作次数
'''if len(A)==1:
#当最后为叶子节点时候返回数组return A
else:
m = len(A)//2#构造左二叉树
left = merge_sort(A[:m])
#构造右二叉树
right = merge_sort(A[m:])
#合并左右return merge(left, right)