1 package com.array;
2
3 import java.util.Arrays;
4
5 public class QuickSort {
6 public static void main(String[] args) {
7 int[] a = {45,14,5,24,5,62,7,84,34,14};
8 quickSort(a, 0, a.length - 1);
9 System.out.println(Arrays.toString(a));
10 }
11
12 public static void quickSort(int[] arr, int start, int end) {
13 if (start > end)
14 return;
15 int pivot = arr[start];
16 int l = start;
17 int r = end;
18 while (l < r) {
19 while (l < r && arr[r] >= pivot) { // 这里必须加等于号,否则 l , r 游标走不下去,只能在两个相等的数上循环!!!!
20 r--;
21 }
22 if (l < r) { //&& arr[r] <= pivot
23 arr[l] = arr[r];
24 }
25 while (l < r && arr[l] <= pivot) {
26 l++;
27 }
28 if (l < r) { //&& arr[l] >= pivot
29 arr[r] = arr[l];
30 }
31 if (l >= r) {
32 arr[l] = pivot;
33 }
34 }
35 quickSort(arr, start, l - 1); // 这里也必须要 + 1 - 1, 否则导致pivot没变,然后一直让右游标r 循环往左移动(无效的移动)
36 quickSort(arr, l + 1, end);
37 }
38 }