设A[1..n]是一个包含N个非负整数的数组。如果在i〈 j的情况下,有A〉A[j],则(i,j)就称为A中的一个逆序对。
例如,数组(3,1,4,5,2)的“逆序对”有<3,1>,<3,2><4,2><5,2>,共4个。
那么该如何求出给定一个数列包含逆序对个数?
首先最简单的方法,直接遍历,时间复杂度为O(n^2)
源码如下:
//最简单的办法,直接枚举遍历
int last)
3: {
int count = 0;
int i;
while(first < last)
7: {
8: i = first +1;
// int cout_tmp = 0;
while(i <= last)
11: {
if(a[i] < a[first]){
13: count++;
// ++ cout_tmp;
15: }
16: i++;
17: }
//cout<<cout_tmp<<endl;
19: first++;
20: }
21: cout << count << endl;
return count;
23: }