陣列的快速排序,手擼一遍
阿新 • • 發佈:2019-01-30
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);
}