求逆序对数(利用归并排序)
2014-09-11 09:50
253 查看
int cnt = 0; void merge_sort(int *A, int x, int y, int *T) { if(y-x > 1) { int m = x + (y-x)/2; int p = x, q = m, i = x; merge_sort(A, x, m, T); merge_sort(A, m, y, T); while(p < m || q < y) { if(q >= y || (p < m && A[p] <= A[q])) T[i++] = A[p++]; else { T[i++] = A[q++]; cnt += m - p;//此为修改后; } } for(i = x; i < y; i++) A[i] = T[i]; } }求逆序对数也是一个经典题目,函数实现如上,只需在归并排序的基础上进行修改即可。
相关文章推荐
- ACM:归并排序,以及利用归并排序思想求解逆序对数!
- 归并排序及利用归并排序求逆序对数
- 哈理工OJ 2224 逆序对问题(利用归并排序求逆序数对数)
- hash一下 + 归并排序计算逆序对数
- 利用归并排序求逆序数
- 利用归并排序求逆序对
- Ultra-QuickSort(归并排序求逆序对数)
- POJ 0809 求逆序对数(归并排序求逆序数)
- 归并排序求逆序对数
- 归并排序求逆序对数
- 求逆序对数总结 & 归并排序
- 百练2299:Ultra-QuickSort(归并排序求逆序对数)
- 归并排序求逆序对数
- 利用归并排序求逆序对
- 求逆序对数的方法(归并排序 and 树状数组)
- 归并排序 and 逆序对数(分治)
- 归并排序求逆序对数 (附另两种姿势BIT 线段树)
- 紫书第八章-----高效算法设计(归并排序求逆序对数)
- poj 2299 利用归并排序求逆序数
- POJ 2299 利用树状数组求逆序对数