归并排序求逆序对

void gb(int l,int r)
{
if(l==r)return ;
int mid=((l+r)>>1);
gb(l,mid);
gb(mid+1,r);

int i=l,j=mid+1,s=l;
while(i<=mid&&j<=r){
if(a[i]<a[j])
b[s++]=a[i++];
else{
b[s++]=a[j++];
ans+=mid+1-i;
}
}
while(i<=mid)
b[s++]=a[i++];
while(j<=r)
b[s++]=a[j++];
for(int k=l;k<=r;k++)
a[k]=b[k];
}

这玩阴好像和sort一样··········

原文地址:https://www.cnblogs.com/zyfltyyz/p/11715363.html