public static void sort(int[] arr, int left, int right) {
int i = left, j = right, temp;
if (left >= right) {
return;
}
temp = arr[i];// 以第一个值作为基准值
while (i < j) {
while (i < j && arr[j] >= temp) {// 最右开始往左扫描
j--;
}
arr[i] = arr[j];// 找到小于基准值的值赋值到i的位置,此时arr[j]空缺
while (i < j && arr[i] <= temp) {// 最左开始往右扫描
i++;
}
arr[j] = arr[i];// 找到大于基准值的值赋值给arr[j]
}
arr[i] = temp; // 最后,需要将基准值,赋值给i=j时的位置值
sort(arr, left, i - 1);
sort(arr, i + 1, right);
}
public static void main(String[] args) {
int[] arr = {5, 3, 2, 4, 6, 8};
sort(arr, 0, arr.length - 1);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
java快速排序
最新推荐文章于 2024-07-25 13:40:37 发布