数组中的逆序对数
来源:互联网 发布:淘宝开放平台有什么用 编辑:程序博客网 时间:2024/04/30 13:43
在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序数对。一个排列中逆序的总数就称为这个排列的逆序数。如{2,4,3,1}中,2和1,4和3,4和1,3和1是逆序数对,因此整个数组的逆序数对个数为4,现在给定一数组,要求统计出该数组的逆序数对个数。
#include <stdio.h>#include <stdlib.h>using namespace std;int count = 0;void merge(int a[], int left, int mid, int right){ int p = left;int q = mid + 1;int *buf = new int[right-left+1];int curr = 0;while (p <= mid && q <= right){if (a[p] <= a[q]){buf[curr++] = a[p++];}else{buf[curr++] = a[q++];count += mid-p+1;}}while (p <= mid){buf[curr++] = a[p++];}while (q <= right){buf[curr++] = a[q++];}for (int i = 0; i < curr; i++){a[left+i] = buf[i];}delete []buf;}void mergeSort(int a[], int left, int right){if (left >= right){return;}int mid = left + (right-left)/2;mergeSort(a, left, mid);mergeSort(a, mid+1, right);merge(a, left, mid, right);}int fun(int a[], int n){count = 0;mergeSort(a, 0, n-1);return count;}
0 0
- 数组中的逆序对数
- 数组中的逆序对数
- (5)数组中的逆序对数
- 数组中的逆序对数(剑指offer36)
- 数组中的逆序对数(C++版)
- 【算法】求一个数组中的逆序对数
- 求数组逆序对数
- 数组逆序对数
- 剑指offer面试题36数组中的逆序对数
- 求数组中的逆序对数(inversion pair)
- 树状数组求逆序对数
- 《树状数组求逆序对数》
- 树状数组与逆序对数
- 求数组的逆序对数
- 求解数组中逆序对的对数
- 离散化+树状数组 求逆序对数
- hdu 4911 求逆序对数+树状数组
- 树状数组求逆序对数板子
- Python源码-调试-安装
- sharepoint 创建人类型,用控件读取和设置
- 147. Insertion Sort List
- strcpy和memcpy的区别
- 关于线性表的链式存储(链表)的创建,头插法,尾插法,删除链表结点的操作
- 数组中的逆序对数
- ARM GCC Inline Assembler Cookbook
- 【LeetCode】Roman to Integer
- HDU 1312 Red and Black(BFS,DFS)
- Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
- c++ 类型转换
- [HOJ]1456、[POJ]2259:Team queue
- Android判断获取内置外置sd卡
- cocos2dx 拖动精灵