void QuickSort(int a[],int left,int right){//ij同左出发法。
if(left<right){//同样是结合了partition和Sort。
int temp = a[left];//也是选择左一为基准数。
int i = left; //i从左一开始
for(int j = left + 1;j<=right;j++){//j从左一加一开始。
if(a[j]<temp){//小于等于或者小于都可以 。
i++;
int m =a[i];//交换
a[i] = a[j];
a[j] = m;
}
}
int b = a[i];//交换
a[i]=temp;
a[left] = b;
QuickSort(a,left,i-1);//递归左 ;
QuickSort(a,i+1,right);//递归右 ;
}
} //总结:最后基准数所在都为迟出发的那个游标的下标。 (需证)
算法:快速排序(快速排序其实有很多种不同写法和代码形式)
最新推荐文章于 2023-10-21 03:13:53 发布