| Signature | Description | Parameters |
|---|---|---|
template<typename T, typename C = std::less<T>> size_type inversion_count(const char *col_name) const; |
This returns the number of inversions in the named column. For example, in a column that is already sorted, the number of inversions is zero. In a column that is sorted in reverse, the number of inversions is n(n - 1) / 2. |
T: Data type of the named column C: Type of the comparison functor defaulted to std::less col_name: Name of the column |
static void test_inversion_count() { std::cout << "\nTesting inversion_count( ) ..." << std::endl; using IntDataFrame = StdDataFrame<int>; std::vector<int> idx = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 }; std::vector<int> i1 = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 }; std::vector<int> i2 = { 17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 }; std::vector<int> i3 = { 1,0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 }; std::vector<int> i4 = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,16 }; std::vector<int> i5 = { 1,0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,16 }; std::vector<int> i6 = { 17,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,0 }; std::vector<int> i7 = { 0,1,2,3,4,5,6,10,8,9,7,11,12,13,14,15,16,17 }; std::vector<int> i8 = { 0,1,2,15,4,5,6,7,8,9,10,11,12,13,14,3,16,17 }; std::vector<int> i9 = { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 }; std::vector<int> i10 = { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3 }; std::vector<int> i11 = { 2,2,2,2,3,2,2,2,2,4,2,2,2,5,2,2,2,6 }; IntDataFrame df; df.load_data(std::move(idx), std::make_pair("i1", i1), std::make_pair("i2", i2), std::make_pair("i3", i3), std::make_pair("i4", i4), std::make_pair("i5", i5), std::make_pair("i6", i6), std::make_pair("i7", i7), std::make_pair("i8", i8), std::make_pair("i9", i9), std::make_pair("i10", i10), std::make_pair("i11", i11)); assert(df.inversion_count<int>("i1") == 0); assert(df.inversion_count<int>("i2") == 153); assert(df.inversion_count<int>("i3") == 1); assert(df.inversion_count<int>("i4") == 1); assert(df.inversion_count<int>("i5") == 2); assert(df.inversion_count<int>("i6") == 33); assert(df.inversion_count<int>("i7") == 5); assert(df.inversion_count<int>("i8") == 23); assert(df.inversion_count<int>("i9") == 153); assert(df.inversion_count<int>("i10") == 136); assert(df.inversion_count<int>("i11") == 110); assert((df.inversion_count<int, std::greater<int>>("i1") == 153)); assert((df.inversion_count<int, std::greater<int>>("i2") == 0)); }