期望复杂度:0(n) 最坏复杂度:0(n*n) 方法:通过调用快速排序的子程序:random_paration(),根据返回的中枢元素单方向的处理集合中数据。 代码中实现递归和迭代的random_select()。 1 #include <iostream> 2 #include <cstdlib> 3 #include <ctime> 4 using namespace std; 5 6 int random_paration(int *a,int s,int e) 7 { 8 srand(time(NULL)); 9 //cout <<"s="<<s<<endl; 10 //cout << "e="<<e<<endl; 11 int r = s+rand()%(e-s+1);//注意:此时的随机数应该是s+rand()%(e-s+1) 12 //cout << "rand = " << r << endl; 13 int tmp = a[r]; 14 a[r] = a[e]; 15 a[e] = tmp; 16 17 int p = a[e]; 18 int l=s,h=e; 19 while(l<h) 20 { 21 while(l<h && a[l]<=p) 22