归并求逆序对
2017-08-17 21:48
183 查看
求这个逆序对只需要在归并排序的代码中加一句即可。
感觉自己有点说不清楚,随手附上别人的详细解释,请戳:详细介绍
感觉自己有点说不清楚,随手附上别人的详细解释,请戳:详细介绍
#include<algorithm> #include<iostream> #include<cmath> using namespace std; int a[1000000]; int b[1000000]; int sum = 0; void merge(int l, int mid, int r) { int p1 = l; int p2 = mid + 1; for(int i = l; i <= r; i++) { if(p1 <= mid && (p2 > r || (a[p1] <= a[p2]))) { b[i]=a[p1]; p1++; } else { b[i] = a[p2]; p2++; sum+=mid-p1+1; } } for(int i = l; i <= r;i++) { a[i] = b[i]; } } void erfen(int l,int r) { int mid = (l + r) >> 1; if(l < r) { erfen(l, mid); erfen(mid + 1, r); } merge(l,mid,r); } int main() { int n; printf("请输入你要输入的数字的个数:"); scanf("%d",&n); for(int i = 1; i <= n;i++) { scanf("%d",&a[i]); } erfen(0,n); printf("从小到大输出为:"); for(int i = 1; i <= n;i++) { printf("%d ",a[i]); } printf("\n"); printf("%d\n",sum); }
相关文章推荐
- (二路归并、树状数组) 求解逆序对
- 数据结构实验之排序五:归并求逆序数
- 【hiho39】二分·归并排序之逆序对
- hihocoder #1141 : 二分·归并排序之逆序对
- 数据结构实验之排序五:归并求逆序数
- 归并排序求逆序对
- 链表的各种操作实现 链表逆序 链表排序 有序链表归并 链表存在环的判定
- 数据结构实验之排序五:归并求逆序数
- poj-2299-逆序数-归并排序
- 归并排序-逆序对-hdu3743
- poj - 1804归并求逆序对
- 数据结构实验之排序五:归并求逆序数
- 归并求逆序对
- 3402 数据结构实验之排序五:归并求逆序数
- 归并求逆序数
- 哈理工OJ - 1526 - 小猴和冒泡 【归并排序求逆序数】
- 数据结构:归并排序 && 逆序对统计
- SDUT3402数据结构实验之排序五:归并求逆序数
- 数据结构实验之排序五:归并求逆序数
- 数据结构实验之排序五:归并求逆序数