1. public static void main(String[] args) {
    2. int[] arr = {1, 3, 2, 6, 9, 8, 4};
    3. quickSort(arr, 0, arr.length - 1);
    4. for (int i : arr) {
    5. System.out.print(i + " ");
    6. }
    7. }
    8. public static void quickSort(int[] arr, int begin, int end) {
    9. // 中断条件,如果不合法或只有一个元素直接返回
    10. if (begin >= end) return;
    11. // mid位置之前的元素都小于它,之后的元素都大于它
    12. int mid = partition(arr, begin, end);
    13. // 继续递归前半部分
    14. quickSort(arr, begin, mid - 1);
    15. // 继续递归后半部分
    16. quickSort(arr, mid + 1, end);
    17. }
    18. public static int partition(int[] arr, int begin, int end) {
    19. // 用来记录需要交换的位置
    20. int cur = begin;
    21. // 把所有小于end的元素都和cur位置元素交换
    22. for (int i = begin; i < end; i++) {
    23. if (arr[i] < arr[end]) {
    24. int tmp = arr[i];
    25. arr[i] = arr[cur];
    26. arr[cur] = arr[i];
    27. cur++;
    28. }
    29. }
    30. // 最后把end元素和cur交换,这样end之前的元素都小于它,之后都大于它
    31. int tmp = arr[cur];
    32. arr[cur] = arr[end];
    33. arr[end] = tmp;
    34. return cur;
    35. }