#include<bits/stdc++.h> using namespace std; int n,a[1000],c[1000]; void mergesort(int l,int r){ if(l>=r)return; int mid=(l+r)/2;//l是最左边角色r是最右边的角色,选择中间 mergesort(l,mid);//先算左角色 mergesort(mid+1,r);//再算有角色 int ilen=mid-l+1,jlen=r-mid;//角色合作,i为左边初始位置,k是太平间的起始位置 int i=l,j=mid+1,k=1; while(i<=mid&&j<=r){ if(a[i]<a[j])c[k++]=a[i++];//没有技术含量如果大的赢 else c[k++]=a[j++]; } while(i<=mid)c[k++]=a[i++]; while(j<=r)c[k++]=a[j++]; for(int i=1;i<=r-l+1;i++)a[l+i-1]=c[i]; } int main(){ cin>>n;//输入 for(int i=1;i<=n;i++){ cin>>a[i]; } mergesort(1,n); for(int i=1;i<=n;i++){ cout<<a[i]<<" ";//输出 } return 0; } /************************************************************** Problem: 1010 User: zhengyuxuan Language: C++ Result: Accepted Time:10 ms Memory:2080 kb ****************************************************************/