From 95fcbf7d57da1448acf7d18a28bfab6366a18693 Mon Sep 17 00:00:00 2001 From: ehlxr Date: Thu, 1 Oct 2020 21:42:54 +0800 Subject: [PATCH] update quick sort --- src/main/java/me/ehlxr/leetcode/QuickSort.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/main/java/me/ehlxr/leetcode/QuickSort.java b/src/main/java/me/ehlxr/leetcode/QuickSort.java index 8632d31..bfe2b16 100644 --- a/src/main/java/me/ehlxr/leetcode/QuickSort.java +++ b/src/main/java/me/ehlxr/leetcode/QuickSort.java @@ -16,7 +16,7 @@ import java.util.Arrays; */ public class QuickSort { public static void main(String[] args) { - int[] arr = {4, 9, 1, 6, 8, 2}; + int[] arr = {4, 9, 1, 8, 6, 2}; sort(arr, 0, arr.length - 1); } @@ -47,26 +47,23 @@ public class QuickSort { int i = l, j = r, // 一般选择数组左边界作为基准 k = l; - int p = arr[k]; - while (l < r) { // 首先循环递减右边界,直到找到小于基准的元素,相互交换 - while (l < r && arr[r] >= p) { + while (l < r && arr[r] >= arr[k]) { r--; } - arr[k] = arr[r]; + swap(arr, k, r); k = r; // 其次循环递增左边界,直到找到大于基准的元素,相互交换 - while (l < r && arr[l] <= p) { + while (l < r && arr[l] <= arr[k]) { l++; } - arr[k] = arr[l]; + swap(arr, k, l); k = l; - // 循环以上步骤,直到 l 和 r 相遇 } - arr[k] = p; + // arr[k] = p; System.out.println("Sorting: " + Arrays.toString(arr)); sort(arr, i, k - 1);