原文链接: https://blog.csdn.net/shujuelin/article/details/82423852

    示例代码:

    1. /**
    2. * 快速排序
    3. */
    4. public class QuickSortDemo1 {
    5. public static void main(String[] args) {
    6. int[] arr = {33, 12, 7, 45, 3, 90, 23, 11, 9, 4, 28, 76};
    7. // 排序前
    8. System.out.println("排序前: " + Arrays.toString(arr));
    9. quickSort(arr, 0, arr.length - 1);
    10. System.out.println("排序后: " + Arrays.toString(arr));
    11. }
    12. static void quickSort(int[] arr, int left, int right) {
    13. if (left > right) {
    14. return;
    15. }
    16. int base, i, j, temp;
    17. base = arr[left];
    18. i = left;
    19. j = right;
    20. while (i < j) {
    21. // 判断右边
    22. while (arr[j] >= base && j > i) {
    23. j--;
    24. }
    25. // 判断左边
    26. while (arr[i] <= base && j > i) {
    27. i++;
    28. }
    29. /*不满足上述条件说明我们找到了需要的元素
    30. *即,右边找到了小于基准数的数,左边找了大于基准数的数
    31. */
    32. if (i < j) {
    33. // 两数互换
    34. temp = arr[i];
    35. arr[i] = arr[j];
    36. arr[j] = temp;
    37. }
    38. }
    39. // 循环完成后,此时左边都是比base小的,右边都是比base大,此时base归为到中间
    40. arr[left] = arr[i];
    41. arr[i] = base;
    42. // 递归调用左半边数组
    43. quickSort(arr, left, i - 1);
    44. // 递归调用右半边数组
    45. quickSort(arr, i + 1, right);
    46. }
    47. }