您的位置:首页 > 编程语言 > C语言/C++

归并排序&求逆序对

2016-08-16 15:07 197 查看
void msort(int l,int r)
{
if(l==r)return;
else
{
int mid=(l+r)/2;
int a=l,b=mid+1,c=1;
msort(l,mid);
msort(mid+1,r);
while(a<=mid&&b<=r)
{
if(arr[a]>arr[b])
{
t[c]=arr[b];
num+=mid-a+1;//求逆序对的核心程序
c++;
b++;
}
else{
t[c]=arr[a];
c++;
a++;}

}
while(a<=mid)
{
t[c]=arr[a];
a++;
c++;
}
while(b<=r)
{t[c]=arr[b];
b++;
c++;}
for(int i=1;i<=r-l+1;i++)
arr[l-1+i]=t[i];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息