只贴代码:
#include <stdlib.h>
#include <time.h>
using namespace std;
int Srandm(int start,int end)
{
srand(time(NULL));
return start + rand()%(end - start+1);
}
int Parttion(int *a,int len,int start,int end)
{
if(a == NULL || len <0 || start <0 || end >=len)
return NULL;
int index = Srandm(start,end);
swap(a[index],a[end]);
int small =start-1;
for(index = start;index < end; index ++)
{
if(a[index] < a[end])
{
small ++;
if(index != small)
swap(a[index],a[small]);
}
}
small++;
swap(a[small],a[end]);
return small;
}
void QuickSort(int *a,int len,int start,int end)
{
if(a == NULL)
return ;
if(start == end)
return ;
int index = Parttion(a,len,start,end);
if(index > start)
QuickSort(a,len,start+1,index);
if(index < end)
QuickSort(a,len,index+1,end);
}