void quicksort(int *a,int l,int r){
if(l>=r)
return;
int temp=a[l]; //哨兵
int i=l,j=r;
while(i<j){
while(i<j){ //从右开始往左判断
if(a[j]>=temp){
j--;
}
else{
a[i++]=a[j];
break;
}
}
while(i<j){ //从左开始往右判断
if(a[i]<=temp){
i++;
}
else{
a[j--]=a[i];
break;
}
}
}
a[i]=temp; //将哨兵放回中间位置
quicksort(a,l,i-1); //左边排序
quicksort(a,i+1,r); //右边排序
}
快速排序
最新推荐文章于 2021-11-19 16:57:43 发布