归并排序
include<bits/stdc++.h>
using namespace std; void merge(int,int,int); void sorrt(int,int); int a[100050]={1},n,tp1[100050],tp2[100050];
void sorrt(int low,int up){
if(low>=up)return;
int mid=(low+up)/2;
sorrt(low,mid);
sorrt(mid+1,up);
merge(low,mid,up);
}
void merge(int low,int mid,int up){
memset(tp1,0x7f,sizeof(tp1));
memset(tp2,0x7f,sizeof(tp2));
for(int i=low;i<=mid;i++){
tp1[i]=a[i];
}
for(int i=mid+1;i<=up;i++){
tp2[i]=a[i];
}
int ii=low,jj=mid+1;
for(int k=low;k<=up;k++){
if(tp1[ii]<=tp2[jj]){
a[k]=tp1[ii];
ii++;
}
else{
a[k]=tp2[jj];
jj++;
}
}
}
int main(){ cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sorrt(1,n);
for(int i=1;i<=n;i++)cout<<a[i]<<" ";
return 0;
}