AcWing 787. 归并排序
原题链接
简单
作者:
拿奖回本
,
2024-11-27 14:44:40
,
所有人可见
,
阅读 2
题目描述
n=int(input())
q=[int (x) for x in input().split()]
def merge_sort(a,l,r):
if(l>=r):
return
mid=(l+r)//2
merge_sort(a,l,mid)
merge_sort(a,mid+1,r)
i,j=l,mid+1
tmp=[]
while(i<=mid and j<=r):
if a[i]<=a[j]:
tmp.append(a[i])
i+=1
else:
tmp.append(a[j])
j+=1
while(i<=mid):
tmp.append(a[i])
i+=1
while(j<=r):
tmp.append(a[j])
j+=1
for k in range(l,r+1):#注意这里是从l到r复制,不能用n-1
a[k]=tmp[k-l]
merge_sort(q,0,n-1)
for i in q:
print(i,end=' ')