fork(2) download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. int swapCount = 0;
  6.  
  7. class X
  8. {
  9. public:
  10. int x;
  11.  
  12. X( int val ): x( val ) {};
  13.  
  14. friend void swap( X &a, X &b )
  15. {
  16. using std::swap;
  17. swap( a.x, b.x );
  18. swapCount++;
  19. std::cout << "a.x = " << a.x << ", b.x = " << b.x << std::endl;
  20. }
  21. };
  22.  
  23. void f(int n) {
  24. std::vector<X> vec;
  25. for ( int i = 0; i < n; i++ )
  26. vec.push_back( X( i ) );
  27.  
  28. swapCount = 0;
  29. std::stable_sort( vec.begin(), vec.end(),
  30. [] ( const X &a, const X &b ) -> bool { return (a.x) > (b.x); } );
  31.  
  32. for(auto v : vec)
  33. std::cout << v.x;
  34. std::cout << std::endl;
  35.  
  36. std::cout << n << ") " << "swapCount=" << swapCount << "\n";
  37. }
  38.  
  39. int main() {
  40. for(int n=1; n<100; ++n) f(n);
  41. return 0;
  42. }
Success #stdin #stdout 0s 16056KB
stdin
Standard input is empty
stdout
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