Merge sort templates! Minimalist version

void Sort(int l,int r){
    if(l==r)return;
    int mid=(l+r)>>1;
    Sort(l,mid),Sort(mid+1,r);
    int i=l,j=mid+1,k=l;
    while(i<=mid&&j<=r){
        if(a[i]<=a[j])tmp[k++]=a[i++];
        else tmp[k++]=a[j++],ans+=mid-i+1;
    }
    while(i<=mid)tmp[k++]=a[i++];
    while(j<=r)tmp[k++]=a[j++];
    for(i=l;i<=r;i++)a[i]=tmp[i];
}




Sort(1,n);

 

Guess you like

Origin www.cnblogs.com/Tidoblogs/p/11326677.html