归并排序求逆序对
2018-02-02 20:21
225 查看
感觉写的很不错的板子
void sort(int *s,int l,int r) { if(l==r) return; //区间长度为1时返回 int mid = l+r>>1; //对左右区间进行排序 sort(s,l,mid); sort(s,mid+1,r); int a[mid-l+1],b[r-mid],l1,l2,i,j,k; //复制左右区间 l1 = 0;l2 = 0;k = l; for(i = l;i <= mid;i ++) a[++l1] = s[i]; for(i = mid+1;i <= r;i ++) b[++l2] = s[i]; i = 1;j = 1; //合并放入原数组 while(i<=l1&&j<=l2) { if(a[i]<=b[j]) s[k++] = a[i++]; else { s[k++] = b[j++]; ans+=(l1-i+1); } } while(i<=l1) s[k++] = a[i++]; while(j<=l2) s[k++] = b[j++]; }
相关文章推荐
- 数据结构实验之排序五:归并求逆序数
- 数据结构实验之排序五:归并求逆序数
- 【逆序对】写归并排序的时候顺手写的,于是就贴了,于是标题就长了
- C语言 数据结构排序与查找 数据结构实验之排序五:归并求逆序数
- nyoj 322 117 求逆序数 归并排序
- POJ 2299 Ultra-QuickSort 【归并排序求逆序数 OR 树状数组求逆序数】
- 通用版2.J - 归并排序求逆序对
- 3402 数据结构实验之排序五:归并求逆序数
- 归并排序的实现及利用其求逆序对数
- SDUT-数据结构实验之排序五:归并求逆序数
- 归并排序之逆序对
- SDUT 3402:数据结构实验之排序五:归并求逆序数
- SDUT3402数据结构实验之排序五:归并求逆序数
- sdut oj3402 数据结构实验之排序五:归并求逆序数
- 数据结构实验之排序五:归并求逆序数
- 数据结构实验之排序五:归并求逆序数
- 从逆序对问题展开 归并排序习题归纳
- #1141 : 二分·归并排序之逆序对(归并排序)
- 逆序对 - 归并排序求逆序对
- SDUT3402数据结构实验之排序五:归并求逆序数