package com.zjp.start.sort; import java.util.Arrays; /** * 快排 */ public class QuickSort { public static void main(String[] args) { int[] arr = {10, 7, 2, 4, 7, 62, 3, 4, 2, 1, 8, 9, 19}; quickSort(arr, 0, arr.length - 1); System.out.println(Arrays.toString(arr)); } private static void quickSort(int[] arr, int left, int right) { if (left > right) { return; } int tmp = arr[left]; int i = left; int j = right; while (i < j) { //从右至左寻找小于基数的值得索引 while (i < j && arr[j] >= tmp) { j--; } //从左至右寻找大于基数的值的索引 while (i < j && arr[i] <= tmp) { i++; } if (i < j) { //交换位置 int a = arr[i]; arr[i] = arr[j]; arr[j] = a; } } //交换基数和i的值 arr[left] = arr[i]; arr[i] = tmp; //对左边的数组进行快排 quickSort(arr, left, i - 1); //对右边的数组会进行快排 quickSort(arr, i + 1, right); } }