算法步骤:
- 先把数组分成两部分
- 每部分递归处理变成有序
- 将两个有序列表合并起来
n=int(input())
a=list(map(int,input().split()))
def Merge(A,B):
result=[]
while len(A)!=0 and len(B)!=0:
if A[0]<=B[0]:
result.append(A.pop(0))
else:
result.append(B.pop(0))
result.extend(A)
result.extend(B)
return result
#以上步骤为合并列表
#递归操作:
def MergeSort(A):
if len(A)<2:
return A
mid = len(A)//2
left = MergeSort(A[:mid])
right = MergeSort(A[mid:])
return Merge(left,right)
a=MergeSort(a)
print(' '.join(map(str,MergeSort(a))))
#可以理解为先将传入的数组用 MergeSort函数分成两个列表
#再使用Merge函数归并成一个列表
#仅供本人知识归纳