Ji_FeNG_GGGGG 2022-01-14 16:05 采纳率: 25%
浏览 35

实现递归快排的结果有问题


package com.itheima.myBinarySearch;

public class Demo2 {
    public static void main(String[] args) {
//        先定义一个int类型的数组
        int[] arr = {3, 4, 1, 7, 14, 8, 9, 10};

//        定义一个快排的方法
        quitSort(arr, 0, arr.length - 1);

        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }

    private static void quitSort(int[] arr, int left, int right) {
//        定义一个最左边的值、最右边的值、基本数
        int left0 = left;
        int right0 = right;
        int basenumber = arr[left0];

        while(left != right){
            while(arr[left] <= basenumber && left < right){
                left++;
            }
            while(arr[right] >= basenumber && right > left){
                right--;
            }
//            交换两个值
            int temp = arr[left];
            arr[left] = arr[right];
            arr[right] = temp;
        }
//        当左右两边指向同一个数的时候,基准数归位
        int same = arr[left];
        arr[left] = arr[left0];
        arr[left0] = same;


    }
}
打印结果:
4 1 3 7 14 8 9 10

作为基本数的3左边并不是都小于3的

  • 写回答

2条回答 默认 最新

  • 离水的鱼xyt 2022-01-14 16:37
    关注

    你这好像是冒泡排序啊! arr[left] <= basenumbe 在这个条件是恒等于啊

    评论

报告相同问题?

问题事件

  • 创建了问题 1月14日