//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // template // requires ShuffleIterator // && LessThanComparable // void // partial_sort(Iter first, Iter middle, Iter last); #include #include void test_larger_sorts(unsigned N, unsigned M) { assert(N != 0); int* array = new int[N]; for (int i = 0; i < N; ++i) array[i] = i; std::random_shuffle(array, array+N); std::partial_sort(array, array+M, array+N); for (int i = 0; i < M; ++i) assert(array[i] == i); delete [] array; } void test_larger_sorts(unsigned N) { test_larger_sorts(N, 0); test_larger_sorts(N, 1); test_larger_sorts(N, 2); test_larger_sorts(N, 3); test_larger_sorts(N, N/2-1); test_larger_sorts(N, N/2); test_larger_sorts(N, N/2+1); test_larger_sorts(N, N-2); test_larger_sorts(N, N-1); test_larger_sorts(N, N); } int main() { int i = 0; std::partial_sort(&i, &i, &i); assert(i == 0); test_larger_sorts(10); test_larger_sorts(256); test_larger_sorts(257); test_larger_sorts(499); test_larger_sorts(500); test_larger_sorts(997); test_larger_sorts(1000); test_larger_sorts(1009); }