快排序宇宙最简单版本
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 }