快速排序

Posted huangshen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序相关的知识,希望对你有一定的参考价值。

快速排序

快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列

技术图片

选择最后一个数为基数,以基数为界将数据分为两部分,基数左侧小于基数,基数右侧大于等于基数

   public static void quickSort(int left, int right, int[] arr) {
        if (left>right) return;
        int leftIndex = left;
        int rightIndex = right;
        int boundIndex = right;
        int temp = 0;
        while (leftIndex < rightIndex) {
            /**
             * 从最左侧开始寻找大于基数的数据
             */
            while (leftIndex < rightIndex && arr[leftIndex] <= arr[boundIndex]) {
                leftIndex++;
                
            }
            /**
             * 从最右侧开始寻找小于基数的数据
             */
            while (rightIndex > leftIndex && arr[rightIndex] >= arr[boundIndex]) {
                rightIndex--;
            }
            /**
             * 找到后进行交换
             */
            temp = arr[leftIndex];
            arr[leftIndex] = arr[rightIndex];
            arr[rightIndex] = temp;
        }
        /**
         * 最后将基数放如两部分之间
         */
        if (leftIndex == rightIndex) {
            temp = arr[boundIndex];
            arr[boundIndex] = arr[rightIndex];
            arr[rightIndex] = temp;
        }
        quickSort(left, leftIndex - 1, arr);
        quickSort(rightIndex + 1, right, arr);



    }

以上是关于快速排序的主要内容,如果未能解决你的问题,请参考以下文章

算法排序之堆排序

前端开发工具vscode如何快速生成代码片段

前端开发工具vscode如何快速生成代码片段

如何使用sublime代码片段快速输入PHP头部版本声明

代码片段如何使用CSS来快速定义多彩光标

vs2003:快速片段工具