归并排序模板
#include<bits/stdc++.h> using namespace std; const int N = 1e5+10; int n,s[N],res[N]; void merge_sort(int s[],int l,int r) { int mid = (l+r)>>1; if(l>=r) return; merge_sort(s,l,mid); merge_sort(s,mid+1,r); int i=l,k=0,j=mid+1; while(i<=mid && j<=r ) { if(s[i]<=s[j]) res[k++] = s[i++]; else res[k++] = s[j++]; } while(j<=r) { res[k++] = s[j++]; } while(i<=mid) { res[k++]=s[i++]; } for(int p=l,m=0;p<=r;p++,m++) s[p]=res[m]; } int main() { cin>>n; for(int i=0;i<n;i++) cin>>s[i]; merge_sort(s,0,n-1); for(int i=0;i<n;i++) cout<<s[i]<<' '; return 0; }