Java快速排序

代码如下


    /**
     * 快速排序
     * @param arr 目标数组
     * @param left  排序的起始索引
     * @param right 排序的末尾索引
     */
    private static void quickSort(int[] arr, int left, int right) {
        //递归结束条件
        if (left > right) {
            return;
        }
        //基数
        int baseNum = arr[left];
        //左端索引
        int leftIndex = left;
        //右端索引
        int rightIndex = right;
        //循环交换
        while (leftIndex != rightIndex) {
            //基数由于在左边取,一定要右边开始
            //右边索引停止条件
            while (arr[rightIndex] >= baseNum && leftIndex < rightIndex) {
                rightIndex--;
            }
            //左边索引停止条件
            while (arr[leftIndex] <= baseNum && leftIndex < rightIndex) {
                leftIndex++;
            }
            //左边和右边进行交换
            int temp = arr[leftIndex];
            arr[leftIndex] = arr[rightIndex];
            arr[rightIndex] = temp;
        }
        //左、右索引重合时,左边和重合时中间的值交换
        arr[left] = arr[leftIndex];
        arr[leftIndex] = baseNum;
        //递归左右两边
        quickSort(arr, left, leftIndex - 1);
        quickSort(arr, rightIndex + 1, right);
    }

posted @ 2021-03-12 19:30  youngyajun  阅读(49)  评论(0编辑  收藏  举报