快排序宇宙最简单版本

 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 }

 

posted @ 2021-06-24 10:22  tianyee  阅读(43)  评论(0编辑  收藏  举报