C++版快排
int partition(int a[], int p, int r)//一次快排 选中最后a[r]为基准
{
if(a==NULL||p<0||r>a.length)
{
cout<<"invalid parameters!"<<endl;
}
int i=p-1;//初始时,i=-1;
for(int j=p;j<r;j++)// j指向大于a[r]的第一个值
{
if(a[j]<a[r])
{
swap(a[++i],a[j]);// i指向小于a[r]的最后一个值;
}
}
swap(a[++i],a[r]);
return i;
}
void QuickSort(int a[],int start,int end)
{
if(start==end) return;
if(start<end)//直至start和end指向同一值
{
int index=partition(a,start,end);
QuickSort(a,start,index-1);
QuickSort(a,index+1,end);
}
}
python版快排
def sort(array,low,high):
key=array[low]
while low<high:
while low<high and array[high]>=key:
high-=1
array[low]=array[high]
while low<high and array[low]<key:
low += 1
array[high]=array[low]
array[low]=key
return low
def quick_sort(array,low,high):
if low < high:
key_index = sort(array,low,high)
quick_sort(array,low,key_index)
quick_sort(array,key_index+1,high)