在本教程中,我们将讨论一个使用C ++ STL中的set计数反转的程序。
反转计数是对数组完全排序的接近程度的度量。如果数组已经排序,那么反转计数将为0。
#include<bits/stdc++.h> using namespace std; //返回反转计数 int get_Icount(int arr[],int n){ multiset<int> set1; set1.insert(arr[0]); int invcount = 0; //initializing result multiset<int>::iterator itset1; for (int i=1; i<n; i++){ set1.insert(arr[i]); itset1 = set1.upper_bound(arr[i]); invcount += distance(itset1, set1.end()); } return invcount; } int main(){ int arr[] = {8, 4, 2, 1}; int n = sizeof(arr)/sizeof(int); cout << "Number of inversions count are : "<< get_Icount(arr,n); return 0; }
输出结果
Number of inversions count are : 6