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


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的

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

给你参考一下正确的,望采纳

public static void quickSort(float[] array,int low,int high)
    {
        if(low < high)
        {
            //获取基准点
            int middle = getMiddle(array,low,high);
            quickSort(array,low,middle-1);
            quickSort(array,middle+1,high);
        }
    }

    //对每个分部数组进行排序,并给出下一轮的数组切分点
    public static int getMiddle(float[] arr,int low,int high)
    {
        //数组的第一个数为基准元素
        float temp = arr[low];
        while(low < high)
        {
            while(low < high && arr[high] >= temp)
            {
                high--; //从后向前找比基准小的数
            }
            //把比基准小的数移到低端
            arr[low] = arr[high];
            while(low < high && arr[low] <= temp)
            {
                low++; //从前向后找比基准大的数
            }
            //把比基准大的数移到高端
            arr[high] = arr[low];
        }
        arr[low] = temp;
        return low;
    }