基础算法--归并排序
#include<iostream> using namespace std; const int N=1000010; int a[N],q[N]; void merge_sort(int a[], int l, int r){ if(l>=r)return ; int mid=l+r>>1; merge_sort(a,l,mid),merge_sort(a,mid+1,r); int i=l,j=mid+1,k=0; while(i<=mid&&j<=r){ if(a[i]<a[j])q[k++]=a[i++]; else q[k++]=a[j++]; } while(i<=mid)q[k++]=a[i++]; while(j<=r)q[k++]=a[j++]; for(i=l,j=0;i<=r;i++,j++)a[i]=q[j]; } int main(void){ int n; cin>>n; for(int i=0;i<n;i++)cin>>a[i]; merge_sort(a,0,n-1); for(int i=0;i<n;i++)cout<<a[i]<<' '; return 0; }