
/*** 快速排序法* 6,1,2,7,9,11,4,5,10,8* i=4,j=4,arr is 4,1,2,5,6,11,9,7,10,8* i=2,j=2,arr is 2,1,4,5,6,11,9,7,10,8* i=1,j=1,arr is 1,2,4,5,6,11,9,7,10,8* i=0,j=0,arr is 1,2,4,5,6,11,9,7,10,8* i=3,j=3,arr is 1,2,4,5,6,11,9,7,10,8* i=9,j=9,arr is 1,2,4,5,6,8,9,7,10,11* i=6,j=6,arr is 1,2,4,5,6,7,8,9,10,11* i=5,j=5,arr is 1,2,4,5,6,7,8,9,10,11* i=7,j=7,arr is 1,2,4,5,6,7,8,9,10,11* i=8,j=8,arr is 1,2,4,5,6,7,8,9,10,11* 1,2,4,5,6,7,8,9,10,11* 2022/2/7 18:21*/public class Demo1 {public static void quickSort(int[] arr, int begin, int end) {// 边界if (begin > end)return;// 初始值:以第一个为基准值int base = arr[begin];int i = begin;int j = end;while (i != j) {while (arr[j] >= base && j > i) {j--;}while (arr[i] <= base && j > i) {i++;}if (j > i) {// 当右边的值比基准值小,左边的值比基准值大int t = arr[i];arr[i] = arr[j];arr[j] = t;}}// 交换基准值arr[begin] = arr[i];arr[i] = base;System.out.println("i=" + i + ",j=" + j + ",arr is " + toString(arr));// 递归左边quickSort(arr, begin, i - 1);// 递归右边quickSort(arr, i + 1, end);}public static void main(String[] args) {int[] ints = {6, 1, 2, 7, 9, 11, 4, 5, 10, 8};System.out.println(toString(ints));quickSort(ints, 0, 9);System.out.println(toString(ints));}public static String toString(int[] ints) {StringBuilder sb = new StringBuilder();for (int i = 0; i < ints.length; i++) {sb.append(ints[i]);if (i < ints.length - 1) {sb.append(",");}}return sb.toString();}}
参考博客: https://blog.csdn.net/qq_40941722/article/details/94396010
