归并排序求逆序对模板

mac2022-06-30  25

归并排序求逆序对题目(持续更新)

\(1.\) \(Ultra\) \(Quicksort\) (需要该篇博文的阅读密码)

\(2.\) 奇数码问题

\(3.\) \(M \times N\) \(Puzzle\)

\(4.\) \(Genius\) \(ACM\) (需要该篇博文的阅读密码)

归并排序求逆序对

细节:传参三个,左、中、右三端点,每次运算注意中端点总取左右端点和的一半;返回条件为左右端点相等,此时无需排序。

\(View\) \(Code\)

int a[MAX],b[MAX]; long long ans; void msort(int l,int mid,int r) { if(l==r) return; msort(l,(l+mid)>>1,mid); msort(mid+1,(r+mid+1)>>1,r); int i=l,j=mid+1; for(register int k=l;k<=r;k++) { if(j>r||(i<=mid&&a[i]<a[j])) b[k]=a[i++]; else { ans+=mid-i+1; b[k]=a[j++]; } } for(register int k=l;k<=r;k++) a[k]=b[k]; }

转载于:https://www.cnblogs.com/Peter0701/p/11247332.html

最新回复(0)