实现思路一:
int Partition(int data[], int length, int start, int end)
{
if (data==NULL || length<1 || start<0 || end>=length)
throw new exception("Invalid Parameters!");
int index = start + rand()%(end-start+1);
Myswap(data[index], data[end]);
int small = start - 1;
for (index=start; index<end; ++index )
{
if (data[index] < data[end]) //找比基值小的
{
++small;
if (small != index)
Myswap(data[index],data[small]);
}
}
++small; //分界处
Myswap(data[small], data[end]);
return small;
}
void QuickSort(int data[], int length, int start, int end)
{
if (start==end)
return;
int index = Partition(data,length,start,end);
if (index>start)
QuickSort(data,length,start,index-1);
if (index<end)
QuickSort(data,length,index+1,end);
}