归并排序法求数组中的倒置数量
来源:互联网 发布:.top域名谁在管理 编辑:程序博客网 时间:2024/05/18 02:51
如果一对元素(A[i], A[j])是倒序的,即i < j但是A[i] > A[j],则他们被称为一个倒置。设计o(nlogn)的算法来计算数组中的倒置数量。
利用归并排序实现源码如下:
#include <iostream>#include <cassert>using namespace std;void Merge(int *left, int leftSize, int *right, int rightSize, int *result, int &reverseNum){int *left_end = left + leftSize;int *right_end = right + rightSize;while(left < left_end && right < right_end) {if(*left > *right) {*result++ = *right++;reverseNum += (left_end - left);} else*result++ = *left++;}while(left < left_end)*result++ = *left++;while(right < right_end)*result++ = *right++;}void MergeSort(int *arr, int len, int &reverseNum){if(len == 1)return;int leftSize = len / 2, rightSize = len - len / 2;int *left = new int[leftSize];int *right = new int[rightSize];for(int i = 0; i < leftSize; i++)left[i] = arr[i];for(int i = 0; i < rightSize; i++)right[i] = arr[i + leftSize];MergeSort(arr, leftSize, reverseNum);MergeSort(arr + leftSize, rightSize, reverseNum);Merge(left, leftSize, right, rightSize, arr, reverseNum);delete[] left;delete[] right;}int calReversePair(int *arr, int len){assert(arr);int reverseNum = 0;MergeSort(arr, len, reverseNum);return reverseNum;}int main(){int a[] = {8, 7, 6, 5, 4, 3, 2, 1};cout << calReversePair(a, sizeof(a) / sizeof(a[0])) << endl;return 0;}运行结果为:28
0 0
- 归并排序法求数组中的倒置数量
- 归并排序求数组中的逆序对
- 利用归并排序思想求数组中的逆序对
- 归并排序思想应用之----求数组中的逆序对
- 利用归并排序求数组中的逆序对
- 归并排序&&树状数组求逆序数
- 归并排序求数组逆序对
- 归并排序 树状数组 求逆序数
- 修改归并排序求数组逆序对
- 数组中的逆序对(归并排序)
- 归并排序-数组中的逆序对
- 数组中的逆序对(归并排序)
- 求逆序数模板(树状数组+离散化 || 归并排序法)
- 【树状数组or归并排序求逆序数】HDU 1394
- NYOJ 117 求逆序数 【树状数组】或【归并排序】
- poj 2299 求逆序对 树状数组 归并排序
- nyoj117求逆序数(离散化+树状数组/归并排序)
- 树状数组(归并排序) 之 求逆序数nyoj117
- 公共字符串计算
- UL标签的padding与margin默认值
- http://www.ebay.com/cln/9_28532/-/158076451011/2015-01-17.html
- 阿里巴巴投资印度电商服务平台
- How to fix “System program problem detected” error on Ubuntu
- 归并排序法求数组中的倒置数量
- Sort函数的一些应用详解
- Hadoop自定义分区Partitioner
- 做了6年的fpga该怎么走
- Mesh的合并
- Oracle UPDATE、DELETE、INSERT与Undo(UPDATE、DELETE如何从Undo里找到前镜像)
- java.util.concurrent.locks lock锁【2】
- 排序小结 (上)
- rtmplib rtmp协议过程分析