归并排序
const int N=1e5+10;
int a[N],b[N];
int n;
void merge_sort(int l,int r)
{
if(l>=r) return;
int mid=l+r>>1;
merge_sort(l,mid);
merge_sort(mid+1,r);
int i=l,j=mid+1;
for(int k=l;k<=r;k++)
if(j>r || (i<=mid && a[i]<=a[j])) b[k]=a[i++];
else b[k]=a[j++];
for(int k=l;k<=r;k++) a[k]=b[k];
}
int main()
{
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
merge_sort(0,n-1);
for(int i=0;i<n;i++) cout<<a[i]<<' ';
cout<<endl;
//system("pause");
}