#include<cstdio>
using namespace std;
int a[10001],b[10001];
void merge(int l,int r){
int m,i,j,k;
if(l==r) return ;
m=(l+r)/2;
merge(l,m);
merge(m+1,r);
i=l;
j=m+1;
k=l;
while(i<=m && j<=r){
if(a[i]<=a[j]){
b[k]=a[i];
k++;
i++;
}
else{
b[k]=a[j];
k++;
j++;
}
}
while(i<=m){
b[k]=a[i];
k++;
i++;
}
while(j<=r){
b[k]=a[j];
k++;
j++;
}
for(int s=l;s<=r;s++)
a[s]=b[s];
}
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
merge(1,n);
for(int i=1;i<=n;i++)
printf("%d ",a[i]);
return 0;
}
大佬看看我写的排序对不对?
多多指教!