快速排序【2023年最新】

news2024/11/28 12:51:15

快速排序思想总结:

内附快排模版,可开袋即食。

学了一套快速排序的模版,接下来我说一下我的理解。

这套模板的思路是这样的,随机找到一个点,可以是数组中的左边界也可以是右边界,或者是数组中任何一个元素,为了方便计算和理解,这里将这个点设为左边界,并且叫做pivot。然后,去比较右边界和左边界的大小,先看右边界的值是否大于pivot的值,如果大于,则右边界一直往左走,当右边界的值小于pivot,则将右边界此时的值赋值给左边界。然后轮到左边界了,左边界也要比较和pivot的值的大小,如果小于pivot则一直往右走,如果大于,则将左边界的值赋值给右边界。循环这个操作,循环条件是左边界的指针大于右边界的指针。如果左边界的指针大于或者等于右边界的指针,就将此时的指针所指的值换成pivot。可以发现,我们第一趟函数走完,我们把大于pivot的放在pivot的右边,小于pivot的放在pivot的左边。此时很有可能pivot的左边或者右边还不是有序的,所以我们要继续递归执行这个函数,继续去排序pivot的左边和右边,文章的快排模版差不多是这个意思。

    public static void quickSort(int[] n,int start,int end){
        if(start>end) return;
        int left = start,right = end;
        int pivot = n[left];
        while(left<right){
            while(left<right&&n[right]>=pivot){
                right--;
            }
            if(left<right){
                n[left] = n[right];
            }
            while(left<right&&n[left]<=pivot){
                left++;
            }
            if(left<right){
                n[right] = n[left];
            }
            if(left>=right){
                n[left] = pivot;
            }
        }
        quickSort(n,start,right-1);
        quickSort(n,right+1,end);
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1187976.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

创建Bucket失败,请核对Bucket名称(规则:只能包含小写字母、数字和短横线,必须以小写字母或者数字开头 长度必须在3-255字节之间

这个是管理云服务器的职员的事&#xff0c;和前端没关系&#xff0c; 报错这个的话&#xff0c;一般是上传图片的时候oss那的问题&#xff0c; 接口上传调用成功&#xff0c;但是图片没上传到云服务器上&#xff0c; 小程序和后台如果都用到这个前台和后台都会报错&#xff0c;…

【STM32】HAL库UART含校验位的串口通信配置BUG避坑

【STM32】HAL库UART含校验位的串口通信配置BUG避坑 文章目录 UART协议校验位HAL库配置含校验位的串口配置BUG避坑附录&#xff1a;Cortex-M架构的SysTick系统定时器精准延时和MCU位带操作SysTick系统定时器精准延时延时函数阻塞延时非阻塞延时 位带操作位带代码位带宏定义总线函…

对话凯文·凯利:AI 会取代人的 90% 技能,并放大剩余的 10%

采访 | 邹欣&#xff0c;CSDN 副总裁 作者 | 王启隆 责编 | 唐小引 出品 | 《新程序员》编辑部 5000 天后&#xff0c;你都会做些什么&#xff1f; 是和 AI 助手一起编程&#xff0c;还是让生活完全由 AI 掌控&#xff0c;自己坐享其成&#xff1f;如果到时候还要上班&a…

如何利用SD-WAN优化跨国企业访问SAP的性能

随着企业数字化的创新发展和应用系统部署规模的增长&#xff0c;企业传统网络已经无法满足应用系统对大上行带宽、确定性时延、高可靠和精准优化等能力的要求&#xff0c;因此在现有传统网络基础上&#xff0c;企业也需要不断变革WAN技术&#xff0c;以更稳定、更高效、更安全的…

vue分片上传视频并转换为m3u8文件并播放

开发环境&#xff1a; 基于若依开源框架的前后端分离版本的实践&#xff0c;后端java的springboot&#xff0c;前端若依的vue2&#xff0c;做一个分片上传视频并分段播放的功能&#xff0c;因为是小项目&#xff0c;并没有专门准备文件服务器和CDN服务&#xff0c;后端也是套用…

使用 Socks5 来劫持 HTTPS(TCP-TLS) 之旅

MITM 劫持的过程中&#xff0c;HTTP 协议并不是唯一选择。 实际在 MITM 使用过程中&#xff0c;BurpSuite 和 Yakit 提供的交互式劫持工具只能劫持 HTTP 代理的 TLS 流量&#xff1b;但是这样是不够的&#xff0c;有时候我们并不能确保 HTTP 代理一定生效&#xff0c;或者说特…

力扣每日一题 ---- 2906. 构造乘积矩阵

这题很简单(一下就能想到是前缀和的提米)&#xff0c;但是在处理12345上面需要仔细一点&#xff0c;本来我最开始想到的时候全部累乘在除掉当前数&#xff0c;但是这样就没有把12345考虑进去&#xff0c;如果他本身是12345的话&#xff0c;那么除他以外的乘积并不一定是0&#…

CSS3 边框、圆角、背景

CSS3是最新的CSS标准。CSS3被拆分为“模块”。一些最重要的CSS3模块如下&#xff1a;选择器、盒模型、背景和边框、文字特效、2D/3D转换、动画、多列布局、用户界面。 一、CSS3边框&#xff1a; 用CSS3&#xff0c;可以创建圆角边框、添加阴影框&#xff0c;并作为边界的形象而…

碳酚醛防热复合材料渗透率测试方法及其精密压差控制解决方案

摘要&#xff1a;气体渗透率是树脂基纤维防热和烧蚀复合材料的关键性能参数&#xff0c;基于现有的稳态法渗透率测试技术相关研究报道&#xff0c;本文提出了更详细和切实可行的渗透率测试中的真空压力差精密控制解决方案。解决方案采用了两个真空度可精密控制的缓冲罐布置在被…

死亡游戏:密室互猜硬币规则及其破解方法

今天听到一个有点小恐怖的死亡游戏 规则是 将你和最好的朋友 分别关进两个不同的房间 要关 100天 在被关的时间里 你们无法进行任何的沟通 每一天 会有一个人在你和朋友的房间分别抛一次硬币 你们需要去猜对方硬币的正反面 只需要一个人猜对了 则 相安无事 如果两个人都猜错了…

nuxt3踩坑

1、安装nuxt3报错&#xff1a;Error: Failed to download template from registry: fetch failed &#xff08;1&#xff09;以管理员身份打开cmd &#xff08;2&#xff09;进入hosts所在目录&#xff0c;默认是在C:\Windows\System32\drivers\etc下&#xff1a; cd C:\Wi…

Mac代码文本编辑器Sublime Text 4

Sublime Text 4 for Mac拥有快速响应的功能&#xff0c;可以快速加载文件和执行命令&#xff0c;并提供多种语言支持&#xff0c;包括C 、Java、Python、HTML、CSS等。此外&#xff0c;该编辑器还支持LaTeX、Markdown、JSON、XML等技术领域。 Sublime Text 4 for Mac的插件丰富…

centos 上redis以及远程连接工具rdm安装与使用

目录 一 安装包准备 二 安装 三 启动 redis 四 rdm 连接 redis 一 安装包准备 redis 6.2.4 网盘资源&#xff1a; 链接: https://pan.baidu.com/s/1R120Va9FEyraLdiPe9fBHg?pwdgq9i 提取码: gq9i rdm 网盘资源&#xff1a; 链接: https://pan.baidu.com/s/1GiYnfIuQdSUmM…

解决EnableKeyword(“_Emission“)运行状态不起作用

我使用的是Standard Shader&#xff0c;一开始“_Emission”没有开启 当我运行下面的代码&#xff0c;可以看到Inspector窗口已经生效&#xff0c;然而物体本身并没有重新开始渲染&#xff0c;反射没有开启 public GameObject go; // Start is called before the first frame…

spring boot 中@Value读取中文配置时乱码

1.spring boot 读取application.properties 该文件是iso8859编码 如果是直接写中文 读取时会乱码 显示成?? 必须得转ascii码才能正常显示 其他方法测试也不行 Value("${apig.order.tiaokong.qianzi}") private String apigOrderTiaokongQianzi;

【k8s-1】基于docker Desktop一键式搭建k8s环境

在docker desktop中一键启动k8s环境很简单。 下面介绍如何启动dashboard&#xff0c;dashboard仪表盘是新手学习k8s至关重要的一个工具。 1、配置控制台 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml 2、开…

Bcc-tools 中文件系统相关工具介绍

之前简单介绍过了Linux下的工具集 bcc-tools&#xff0c; 本次详细的介绍一下和文件系统相关的一些实用工具&#xff0c;以下工具可以快速的帮我们定位文件系统相关问题&#xff0c;比如&#xff1a; 当前系统在读写哪些文件&#xff1f;哪些文件读写耗时比较长&#xff1f;哪…

electron+vite+vue3项目打包

1.安装打包依赖&#xff0c;调整打包命令 npm install electron-builder -D 2.安装完成后&#xff0c;在 package json 中&#xff0c;配置 build 命令 "build": "vite build && electron-builder", 3.electron/index.js修改 win.loadURL 中…

C语言指针详解与应用

写在前面&#xff1a;本文是基于哔哩哔哩江协科技的[C语言] 指针的详解与应用-理论结合实践&#xff0c;真正理解指针&#xff01;学习时写的笔记&#xff0c;复习查阅方便&#xff0c;如有侵权&#xff0c;联系删除。 另外本人也是初学者&#xff0c;有很多理解不透彻的或者错…

聚焦谋发展,筑梦新征程——云起无垠乔迁新址

2021年7月&#xff0c;网络安全新锐企业北京云起无垠科技有限公司&#xff08;以下简称&#xff1a;云起无垠&#xff09;注册成立。云起无垠致力于研究漏洞挖掘尖端技术和打造卓越漏挖工具&#xff0c;并在业界迅速崭露头角&#xff0c;受到了广泛瞩目。 发展至今&#xff0c…