题目:787. 归并排序 #include<bits/stdc++.h> using namespace std; typedef long long LL; const int N=1e5+10; const int mod=100000007; int n; int a[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; int t[N]; int k=0; while(i<=mid&&j<=r){ if(a[i]<=a[j]) t[k++]=a[i++]; else t[k++]=a[j++]; } while(i<=mid) t[k++]=a[i++]; while(j<=r) t[k++]=a[j++]; for(int i=0;i<k;i++){ a[l+i]=t[i]; } } 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]<<" "; } return 0; }