标签:sys 递归 快速 左移 java实现 stat 一个 哨兵 static
public class QuickSort {
public static void quickSort(int[] arr, int left, int right){
int temp;
int i = left;
int j = right;
if (left < right){
// temp存放哨兵
temp = arr[left];
while (i != j){
// 先从右扫描,只要比temp大j就向左移,直到找到一个比哨兵temp小的数
while (i < j && arr[j]>temp){ --j; }
if (i < j){
// 把该数放到temp左边
arr[i] = arr[j];
// i指针右移一位
i++;
}
// 再从左往右扫描,只要比temp小i就向右移,直到找到一个比哨兵temp大的数
while (i < j && arr[i] < temp){ ++i; }
if (i < j){
// 把该数放到temp右边
arr[j] = arr[i];
// j指针左移一位
j--;
}
}
// 将temp放在最终位置(把数组分成两部分了)
arr[i] = temp;
// 每一部分,分别再进行快速排序(依次递归实现)
quickSort(arr, left, i-1);
quickSort(arr, i+1, right);
}
}
public static void main(String[] args){
int[] arr = {4,6,7,1,2,3,5};
quickSort(arr, 0, arr.length-1);
for (int i=0; i<arr.length; i++){
System.out.print(arr[i]+" ");
}
}
}
标签:sys 递归 快速 左移 java实现 stat 一个 哨兵 static
原文地址:https://www.cnblogs.com/cdlyy/p/12535695.html