归并排序
cpp
void msort(int l,int r){
if(l==r)return;
int mid=l+r>>1;
qsort(l,mid);
qsort(mid+1,r);
int t=l,rt=mid+1,lt=l;
while(lt<=mid&&rt<=r){
if(a[lt]>a[rt]){
b[t++]=a[rt++];
}
else{
b[t++]=a[lt++];
}
}
while(lt<=mid)b[t++]=a[lt++];
while(rt<=r)b[t++]=a[rt++];
for(register int i=l;i<=r;i++){
a[i]=b[i];
}
}