归并排序&求逆序对

来源:互联网 发布:澳大利亚软件不能用 编辑:程序博客网 时间:2024/05/07 21:41
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];    }   }

0 0
原创粉丝点击