1. 程式人生 > >陣列的快速排序,手擼一遍

陣列的快速排序,手擼一遍

c++:

int Partition()函式實現選擇一個數字,將小於這個數的數字放在該數的左邊,大於這個數的放在該數的右邊

int Partition(data[],int length,int start,int end){

if(data==NULL||length<=0||start<0||end>0)

{throw new std::exception("wuxiao");}

int index=RandomInRange(start,end);

Swap(&data[index],&data[end]);

int small=start-1;

for(index=start;index<end;index++)

{

if(data[index]<data[end]){

small++;

if(data[index]!=data[end])

Swap(&data[index],&data[small]);

}

}

small++;

Swap(&data[index],&data[small]);

return small;

}

void quickSort(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);

}