算法导论期望为线性时间的选择算法,根据源码写出的代码。
#include <iostream>
#include <cmath>
#include <ctime>
#include <cstdlib>
using namespace std;
int random_partiton(int*,int,int);
int mypartition(int*,int,int);
void print(int*,int,int);
void print(int*,int,int);
int random_select(int*,int ,int ,int );
int* createarray(int);
void myswap(int*A,int p,int q);
int main ()
{
int *A;
A = createarray(12);
print(A,0,12);
//cout << random_partiton(A,0,11) <<endl;
cout << "sd" << random_select(A,0,11,5) <<endl;
print(A,0,12);
}
int* createarray(int n)
{
int *aret = new int[n];
srand(time(NULL));
for (int i = 0;i < n;i ++)
{
*(aret+i) = rand()%1024;
}
return aret;
}
void print(int *A,int p,int q)
{
for (int i = p;i < q;i ++)
{
cout << A[i] << endl;
}
}
int mypartition(