#define NDEBUG #include #include #include #include #include #include #include #include #include using namespace std; using namespace lemon; void testRadixSort() { int n = 10000000; vector data(n); for (int i = 0; i < n; ++i) { data[i] = (int)(1000 * (rand() / (RAND_MAX + 1.0))) - 500; } radixSort(data.begin(), data.end()); } void testCounterSort() { int n = 10000000; vector data(n); for (int i = 0; i < n; ++i) { data[i] = (int)(1000 * (rand() / (RAND_MAX + 1.0))) - 500; } counterSort(data.begin(), data.end()); } void testSort() { int n = 10000000; vector data(n); for (int i = 0; i < n; ++i) { data[i] = (int)(1000 * (rand() / (RAND_MAX + 1.0))) - 500; } sort(data.begin(), data.end()); } void testStableSort() { int n = 10000000; vector data(n); for (int i = 0; i < n; ++i) { data[i] = (int)(1000 * (rand() / (RAND_MAX + 1.0))) - 500; } stable_sort(data.begin(), data.end()); } void testSorts() { { int n = 10000000; vector data(n); } cout << "Radix sort: " << runningTimeTest(testRadixSort, 60) << endl; cout << "Counter sort: " << runningTimeTest(testCounterSort, 60) << endl; cout << "Standard sort: " << runningTimeTest(testSort, 60) << endl; cout << "Stable sort: " << runningTimeTest(testStableSort, 60) << endl; } int main() { testSorts(); return 0; }