参考孟姐代码
#include<bits/stdc++.h> using namespace std; int a[2000001],b[2000001]; void mergesort(int l,int r) { if(l>=r) return; int mid=(l+r)/2; mergesort(l,mid); mergesort(mid+1,r); int i=l; int j=mid+1; int c=0; while(i<=mid&&j<=r) { if(a[i]<=a[j]) b[c++]=a[i++]; else b[c++]=a[j++]; } while(i<=mid) b[c++]=a[i++]; while(j<=r) b[c++]=a[j++]; for(int k=l,cc=0;k<=r;k++,cc++) { a[k]=b[cc]; } } int main() { int n; cin>>n; for(int i=0;i<n;i++) { cin>>a[i]; } mergesort(0,n-1); for(int i=0;i<n;i++) { cout<<a[i]<<" "; } return 0; }