#include <iostream> #include <vector> #include <algorithm> int swapCount = 0; class X { public: int x; X( int val ): x( val ) {}; friend void swap( X &a, X &b ) { using std::swap; swap( a.x, b.x ); swapCount++; std::cout << "a.x = " << a.x << ", b.x = " << b.x << std::endl; } }; void f(int n) { std::vector<X> vec; for ( int i = 0; i < n; i++ ) vec.push_back( X( i ) ); swapCount = 0; std::stable_sort( vec.begin(), vec.end(), [] ( const X &a, const X &b ) -> bool { return (a.x) > (b.x); } ); for(auto v : vec) std::cout << v.x; std::cout << std::endl; std::cout << n << ") " << "swapCount=" << swapCount << "\n"; } int main() { for(int n=1; n<100; ++n) f(n); return 0; }
Standard input is empty
0 1) swapCount=0 10 2) swapCount=0 210 3) swapCount=0 3210 4) swapCount=0 43210 5) swapCount=0 543210 6) swapCount=0 6543210 7) swapCount=0 76543210 8) swapCount=0 876543210 9) swapCount=0 9876543210 10) swapCount=0 109876543210 11) swapCount=0 11109876543210 12) swapCount=0 1211109876543210 13) swapCount=0 131211109876543210 14) swapCount=0 14131211109876543210 15) swapCount=0 1514131211109876543210 16) swapCount=0 161514131211109876543210 17) swapCount=0 17161514131211109876543210 18) swapCount=0 1817161514131211109876543210 19) swapCount=0 191817161514131211109876543210 20) swapCount=0 20191817161514131211109876543210 21) swapCount=0 2120191817161514131211109876543210 22) swapCount=0 222120191817161514131211109876543210 23) swapCount=0 23222120191817161514131211109876543210 24) swapCount=0 2423222120191817161514131211109876543210 25) swapCount=0 252423222120191817161514131211109876543210 26) swapCount=0 26252423222120191817161514131211109876543210 27) swapCount=0 2726252423222120191817161514131211109876543210 28) swapCount=0 282726252423222120191817161514131211109876543210 29) swapCount=0 29282726252423222120191817161514131211109876543210 30) swapCount=0 3029282726252423222120191817161514131211109876543210 31) swapCount=0 313029282726252423222120191817161514131211109876543210 32) swapCount=0 32313029282726252423222120191817161514131211109876543210 33) swapCount=0 3332313029282726252423222120191817161514131211109876543210 34) swapCount=0 343332313029282726252423222120191817161514131211109876543210 35) swapCount=0 35343332313029282726252423222120191817161514131211109876543210 36) swapCount=0 3635343332313029282726252423222120191817161514131211109876543210 37) swapCount=0 373635343332313029282726252423222120191817161514131211109876543210 38) swapCount=0 38373635343332313029282726252423222120191817161514131211109876543210 39) swapCount=0 3938373635343332313029282726252423222120191817161514131211109876543210 40) swapCount=0 403938373635343332313029282726252423222120191817161514131211109876543210 41) swapCount=0 41403938373635343332313029282726252423222120191817161514131211109876543210 42) swapCount=0 4241403938373635343332313029282726252423222120191817161514131211109876543210 43) swapCount=0 434241403938373635343332313029282726252423222120191817161514131211109876543210 44) swapCount=0 44434241403938373635343332313029282726252423222120191817161514131211109876543210 45) swapCount=0 4544434241403938373635343332313029282726252423222120191817161514131211109876543210 46) swapCount=0 464544434241403938373635343332313029282726252423222120191817161514131211109876543210 47) swapCount=0 47464544434241403938373635343332313029282726252423222120191817161514131211109876543210 48) swapCount=0 4847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 49) swapCount=0 494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 50) swapCount=0 50494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 51) swapCount=0 5150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 52) swapCount=0 525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 53) swapCount=0 53525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 54) swapCount=0 5453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 55) swapCount=0 555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 56) swapCount=0 56555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 57) swapCount=0 5756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 58) swapCount=0 585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 59) swapCount=0 59585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 60) swapCount=0 6059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 61) swapCount=0 616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 62) swapCount=0 62616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 63) swapCount=0 6362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 64) swapCount=0 646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 65) swapCount=0 65646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 66) swapCount=0 6665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 67) swapCount=0 676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 68) swapCount=0 68676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 69) swapCount=0 6968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 70) swapCount=0 706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 71) swapCount=0 71706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 72) swapCount=0 7271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 73) swapCount=0 737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 74) swapCount=0 74737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 75) swapCount=0 7574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 76) swapCount=0 767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 77) swapCount=0 77767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 78) swapCount=0 7877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 79) swapCount=0 797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 80) swapCount=0 80797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 81) swapCount=0 8180797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 82) swapCount=0 828180797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 83) swapCount=0 83828180797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 84) swapCount=0 8483828180797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 85) swapCount=0 858483828180797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 86) swapCount=0 86858483828180797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 87) swapCount=0 8786858483828180797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 88) swapCount=0 888786858483828180797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 89) swapCount=0 89888786858483828180797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 90) swapCount=0 9089888786858483828180797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 91) swapCount=0 919089888786858483828180797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 92) swapCount=0 92919089888786858483828180797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 93) swapCount=0 9392919089888786858483828180797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 94) swapCount=0 949392919089888786858483828180797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 95) swapCount=0 95949392919089888786858483828180797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 96) swapCount=0 9695949392919089888786858483828180797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 97) swapCount=0 979695949392919089888786858483828180797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 98) swapCount=0 98979695949392919089888786858483828180797877767574737271706968676665646362616059585756555453525150494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210 99) swapCount=0