public class QuickSort {
public static void quickSort(int[] arr,int low,int high){
int i,j,temp,t;
if(low>high){//递归跳出条件
return;
}
i=low;//左边第一个数字
j=high;//右边第一个数字
//temp就是基准位,也叫做中心位置我们一般把他设置在第一个
temp = arr[low];
while (i<j) {
//先看右边,依次往左递减
while (temp<=arr[j]&&i<j) {
j--;
}
//再看左边,依次往右递增
while (temp>=arr[i]&&i<j) {
i++;
}
//最后一次i++或者j--跳出循环后,如果满足条件则让数组中两个位置的数字交换
if (i<j) {//此时i=j则表示分组结束
t = arr[j];
arr[j] = arr[i];
arr[i] = t;
}
}
//在上面的分组结束之后,此时左边的数字都比基准小,右边的都比基准大
arr[low] = arr[i];
arr[i] = temp;
//递归调用左半数组
七种排序算法
最新推荐文章于 2024-08-13 09:36:05 发布