归并排序&求逆序对

    xiaoxiao2026-05-25  5

    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]; } }
    转载请注明原文地址: https://ju.6miu.com/read-1310054.html
    最新回复(0)