首页 > 其他分享 >快速排序

快速排序

时间:2022-10-28 11:48:07浏览次数:79  
标签:arr right int 元素 排序 快速 left

思想:

  1. 在待排序的元素任取一个元素作为基准(通常选第一个元素,但最的选择方法是从待排序元素中随机选取一个作为基准),称为基准元素;
  2. 将待排序的元素进行分区,比基准元素大的元素放在它的右边,比其小的放在它的左边;
  3. 对左右两个分区重复以上步骤直到所有元素都是有序的。
    所以把快速排序联想成东拆西补或西拆东补,一边拆一边补,直到所有元素达到有序状态。
public static int[] quick(int [] arr,int start,int end) {
        //设置变量
        int left = start;
        int right = end;
        int temp = 0;
        //left 必须小于等于 right
        if (left <= right) {
            //设置基准
            temp = arr[start];
            //设置循环条件,等到left=right时填入基准temp
            while (left!=right){
                //循环找出小于temp的数组值的下标
                while (right>left&&arr[right]>=temp) {
                    right--;
                }
                //赋值
                arr[left] = arr[right];
                //循环找出大于temp的数组值的下标
                while (left<right&&arr[left]<=temp) {
                    left++;
                }
                //赋值
                arr[right]=arr[left];
            }
            //填入基准
            arr[right] = temp;
            //根据基准分为两边,分别进行递归
            quick(arr,start,left-1);
            quick(arr,right+1,end);
        }
        return arr;
    }

链接
https://www.cnblogs.com/brady-wang/p/15157250.html

标签:arr,right,int,元素,排序,快速,left
From: https://www.cnblogs.com/itsanjin/p/16835273.html

相关文章

  • 12.CF558E A Simple Task 线段树维护字符串区间排序
    12.CF558EASimpleTask线段树维护字符串区间排序要求对于给定的字符串,对给定的区间进行排序线段树经典应用,维护26棵线段树,实现区间覆盖和查询即可。洛谷传送门:​​CF558E......
  • 【Serverless】快速集成云函数HarmonyOS
    ​1、学习目标什么是AppGalleryConnect云函数云函数是一项Serverless计算服务,提供FaaS(FunctionasaService)能力,可以帮助开发者大幅简化应用开发与运维相关事务,降低应......
  • 单网卡设置多IP时Windows下的IP优先级排序问题!(只能做服务器环境):
    本策略只能接收辅助IP收到的包,而无法通过辅助IP发送包,因此只能作为服务器时使用。     局域网下同时单网卡可以设置多IP,同时访问不同网段设备,但普遍而言Windows并......
  • 快速初始化golang和nodejs
    文档说明:只记录关键地方;试验环境:webIDEvscode网页版code-server目标:webIDE终端里能快速使用golang,nodejs,python3,pip3test!-f/etc/apt/source.list.sa......
  • 快速排序
    快速排序的原理排序算法的思想非常简单,在待排序的数列中,我们首先要找一个数字作为基准数(这只是个专用名词)。为了方便,我们一般选择第1个数字作为基准数(其实选择第几个并......
  • 排序算法(常见的排序算法的时间复杂度 O(n2))
    排序算法(常见的排序算法的时间复杂度O(n2))1.冒泡排序(俩俩(相邻的俩个)相比位置交换)O(n2)```js//冒泡排序functionbubleSort(arr){//冒泡排序外层的轮数......
  • 选择排序
    选择排序概述选择排序是一种简单直观的排序算法,无论什么数据进去都是O(n²)的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间......
  • 冒泡排序
    算法详解以从小到大排序为例,冒泡排序法的思路是:遍历原始数据,从第一个数开始,到倒数第二个数结束,比较这个数和下一个数的大小,如果这个数比下一个数大,则交换这两个数。这样便......
  • mysql排序问题
    记一次排序参数导致的分页异常一个业务表中包含主要字段如下:IDSAVE_DATEUPDATE_TIMEVALUEINTyyyy-MM-ddtimeint主键日期时间戳业务数据业务要求......
  • 字典排序
    #按照列表中的每个字典的values大小进行排序,形成一个新的列表。listvar=[ {'sales_volumn':0}, {'sales_volumn':108}, {'sales_volumn':337}, {'sales_volumn':47......