public static void main(String[] args) { int[] arr = {1, 3, 2, 6, 9, 8, 4}; quickSort(arr, 0, arr.length - 1); for (int i : arr) { System.out.print(i + " "); }}public static void quickSort(int[] arr, int begin, int end) { // 中断条件,如果不合法或只有一个元素直接返回 if (begin >= end) return; // mid位置之前的元素都小于它,之后的元素都大于它 int mid = partition(arr, begin, end); // 继续递归前半部分 quickSort(arr, begin, mid - 1); // 继续递归后半部分 quickSort(arr, mid + 1, end);}public static int partition(int[] arr, int begin, int end) { // 用来记录需要交换的位置 int cur = begin; // 把所有小于end的元素都和cur位置元素交换 for (int i = begin; i < end; i++) { if (arr[i] < arr[end]) { int tmp = arr[i]; arr[i] = arr[cur]; arr[cur] = arr[i]; cur++; } } // 最后把end元素和cur交换,这样end之前的元素都小于它,之后都大于它 int tmp = arr[cur]; arr[cur] = arr[end]; arr[end] = tmp; return cur;}