概念:
归并排序,其实是一种分治和递归算法
将大问题转化为一个个小问题处理,最终整合成一个大问题
模板:
const int N = 2e5 + 5;
int a[N],b[N],n;
void mergeSort(int l, int r){
if(l>=r) return;
int mid=(l+r)>>1;
mergeSort(l,mid); mergeSort(mid+1,r);
int i=l,j=mid+1,k=l;
while(i<=mid&&j<=r){
if(a[i]<=a[j])b[k++]=a[i++];
else b[k++]=a[j++];
}
while(i<=mid)b[k++]=a[i++];
while(j<=r)b[k++]=a[j++];
for(int i=l;i<=r;i++)a[i]=b[i];
}
void solve(){
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]<<" \n"[i==n];
}