0001 #include <cstdio> 0002 #include <cstring> 0003 #include <cstdlib> 0004 #include <ctime> 0005 #include "_share/util.h" 0006 #include "UniPrint/print.h" 0007 #include "vector/vector.h" 0008 #include "quickSelect.h" 0009 0010 int main( int argc, char* argv[] ) { //基于快速划分的k选取算法测试 0011 if ( 2 > argc ) { printf ( "Usage: %s <n>\a\a\n", argv[0] ); return 1; } 0012 Rank n = atoi( argv[1] ); 0013 if ( n < 1 ) { printf ( "Invalid arguments\a\a\n" ); return 1; } 0014 srand((unsigned int)time(NULL)); //随机种子 0015 //srand( 31415926 ); //固定种子(假种子,调试用) 0016 for ( Rank k = 0; k < n; k++ ) { 0017 Vector<int> A; 0018 while ( A.size() < n ) // create a random vector 0019 A.insert( rand() % n ); 0020 quickSelect( A, k ); // find k-th element 0021 Vector<int> B( A ); B.sort(); //compared with the sorted copy 0022 printf( ( A[k] == B[k] ) ? " k =%4d OK\n" : " k =%4d Failed\n\n\n", k ); 0023 } 0024 return 0; 0025 }