97 |
97 |
98 } |
98 } |
99 } |
99 } |
100 |
100 |
101 |
101 |
102 void checkCounterSort() { |
102 void checkStableRadixSort() { |
103 { |
103 { |
104 std::vector<int> data1; |
104 std::vector<int> data1; |
105 generateIntSequence(n, data1); |
105 generateIntSequence(n, data1); |
106 |
106 |
107 std::vector<int> data2(data1); |
107 std::vector<int> data2(data1); |
108 std::sort(data1.begin(), data1.end()); |
108 std::sort(data1.begin(), data1.end()); |
109 |
109 |
110 counterSort(data2.begin(), data2.end()); |
110 stableRadixSort(data2.begin(), data2.end()); |
111 for (int i = 0; i < n; ++i) { |
111 for (int i = 0; i < n; ++i) { |
112 check(data1[i] == data2[i], "Test failed"); |
112 check(data1[i] == data2[i], "Test failed"); |
113 } |
113 } |
114 |
114 |
115 counterSort(data2.begin(), data2.end(), Negate()); |
115 stableRadixSort(data2.begin(), data2.end(), Negate()); |
116 for (int i = 0; i < n; ++i) { |
116 for (int i = 0; i < n; ++i) { |
117 check(data1[i] == data2[n - 1 - i], "Test failed"); |
117 check(data1[i] == data2[n - 1 - i], "Test failed"); |
118 } |
118 } |
119 |
119 |
120 counterSort(data2.begin(), data2.end(), negate); |
120 stableRadixSort(data2.begin(), data2.end(), negate); |
121 for (int i = 0; i < n; ++i) { |
121 for (int i = 0; i < n; ++i) { |
122 check(data1[i] == data2[n - 1 - i], "Test failed"); |
122 check(data1[i] == data2[n - 1 - i], "Test failed"); |
123 } |
123 } |
124 } |
124 } |
125 |
125 |