冒泡排序 快排(hoare递归)
今天要讲一个是冒泡排序,进一个是快排,首先是冒泡排序,我相信大家接触的第一个排序并且比较有用的算法就是冒泡排序了,冒泡排序是算法里面比较简单的一种,所以我们先看看一下冒泡排序
还是个前面一样,我们先看一下单趟排序
假设我们又以下数组

我们想要对他进行排序
那么此时我们先看第一个位置和第二个位置
i和j位置,如果这里i位置的值大于j位置的值,那么我们就让他们交换,否则就让i和j同时向后走一位
让i和j位置的值进行交换,然后让i和j同时向后走一位

然后就继续比较i和j位置的值

然后最后排好就是这样子的,此时我们一趟就排序结束了,这时候我们可以看到,我们数组的最后一个元素是最大的,所以我们继续排序,从第0和位置开始到现在9后面的位置,依次比较,如果i大于j位置的元素就交换否则就让i和j同时向后走
下面我们就看一下代码

代码也是很简单基本没什么好看的
下面我们看一个🐂的排序 ,快排,听名字就知道一定很快
下面就看一下
假设我们是这一组数据

我们先说思想,这里就是先选一个数,然后左边找比选定的key大的,右边找小的,然后两个位置交换,然后让最后两个位置相遇后与key位置的值交换,最后就可以让key位置的值的左边都是比key小的,右边都是比key大的
就是这样,所以我们现在来看一下

首先左边找大,右边找小,然后找到了就交换

然后继续找,找到了就交换

最后直到left不小于right说明就剩下最后一个了,然后我们就让相遇的位置与key位置的值交换,最后我们就可以看到
6的左边都是小于他的,6的右边都是大于他的
到了这里我们一趟排序就结束了,我们想一下刚才排序的过程,我们用左边第一个值作为key,然后我们右边先开始找的小于key位置的值,我们这里就先记住,如果是左边为key那么就右边先走,如果右边为key那么就左边先走,其中这里的key并不是某一个固定的值,我们可以选数组其他位置的值为key但是那样的话容易出错,所以我们可以选择左边或者右边的值为key,那么这样我们就一趟排序结束了
这时候我们就可以想,怎么样可以把他排序好
我们这时候继续看一下
这时候我们的6已经拍好了,所以我们就不需要在管6了,我们就可以让他继续

递归下去,以一边的right以6这个位置-1为末尾,另一边以6这个位置+1为起始点
然后我们继续递归

就这样下去我们就可以依次拍好,让每一个值的左边都是小于他的右边都是大于他的,这里我们认为如果只剩下一个数字那么就是有序的。所以这里如果l不小于r那么就 只剩下一个数字
最后排序好就是这样

就是这样,然后我们就排序好了
下面我们就来看一下代码

首先我们这里定义key为left,然后我们就开始找大和小,然后让他们交换,知道left不小于right说明已经找完了,最后让left和right相遇的位置和key位置的值交换,然后就进行递归
你们可以画一下递归展开图
就是这样,主要是这里画递归展开图太麻烦了,就不画了,而且之前在树遍历那一块画了很多遍,思想已经传达到了
这个就是快排
完了介绍快排的时间复杂度
相关文章:
冒泡排序 快排(hoare递归)
今天要讲一个是冒泡排序,进一个是快排,首先是冒泡排序,我相信大家接触的第一个排序并且比较有用的算法就是冒泡排序了,冒泡排序是算法里面比较简单的一种,所以我们先看看一下冒泡排序 还是个前面一样,我们…...
49天精通Java,第24天,Java链表、散列表、HashSet、TreeSet
目录一、链表二、散列表三、HashSet四、TreeSet五、TreeSet常用方法大家好,我是哪吒。 一、链表 从数组中间删除一个元素开销很大,其原因是向数组中插入元素时,此元素之后的所有元素都要向后端移动,删除时也是,数组中…...
HashMap源码分析小结
HashMap相关问题 HashMap实现原理 HashMap是以键值对的形式存储数据,内部是通过数组链表结构实现,在1.7之后的版本,链表结构可以升级为红黑树,提高查询效率 key和value都支持为null;key为null时hash值是0࿰…...
太奇怪了!小公司面试全挂,大厂面试全过,为什么小公司要求比大厂还高?...
大厂的人才去小公司面试,一定是降维打击吗?还真未必。一位网友很困惑:真的奇怪,小公司面试全挂,大厂面试10个过了9个,感觉小公司要求比大厂还高,这是怎么了?来看看网友们的看法。有人…...
Java开发环境配置
Java开发环境配置 Java是目前世界上最流行的编程语言之一,它的使用范围广泛,从Web应用程序到桌面应用程序再到移动应用程序,Java都是一种非常有用的语言。想要进行Java开发,首先需要在计算机上配置Java开发环境。 在本文中&…...
大学英语视听说教程(陈向京版本)
词汇题(55道) 1. You should carefully think over_____ the manager said at the meeting. A. that B. which C. what D. whose 1.选C,考察宾语从句连接词,主句谓语动词think over后面缺宾语,后面的宾语从句谓语动…...
nginx--开源免费
nginx开源免费,支持高性能,高并发的web服务和代理服务软件。 apache,nodejs nginx可以提供的服务: 1、web服务 2、负载均衡(反向代理)(动静分离) 3、web cache(web缓存) nginx…...
阿里云OSS对象存储
目录 1:OSS 1.1:开通OSS服务 1.2:搭建OSS环境 1.2.1:创建Bucket存储空间 1.2.2:创建文件夹上传图片 1.2.3:RAM访问控制 1.3:快速入门 1.3.1:下载SDK 1.3.2:搭建环…...
基于VHDL语言的汽车测速系统设计_kaic
摘 要 汽车是现代交通工具。车速是一项至关重要的指标。既影响着汽车运输的生产率,又关乎着汽车行驶有没有超速违章,还影响着汽车行驶时人们的人身安全。而伴随着我国国民的安全防范意识的逐步增强,人们也开始越来越关心因为汽车的超速而带来的极其严重…...
【数据结构】单链表(笔记总结)
👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:数据结构 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&…...
Git操作之 git add 撤销、git commit 撤销
1、git add 添加多余文件 撤销操作 git reset HEAD 后面什么都不跟的,就是上一次add 里面的内容全部撤销 git reset HEAD XXX 后面跟文件名,就是对某个文件进行撤销 2、git commit 撤销操作 git reset --soft HEAD^ 这样就成功的撤销了commit操作 注…...
用PyTorch实现MNIST数据集手写数字识别
资源下载:用Pytorch实现MNIST数据集的手写数字识别介绍资源-CSDN文库 手写数字识别是一项相当普遍的应用,因为在现实生活中,我们经常需要对手写数字进行识别,例如在邮政服务中,我们需要对邮件上的邮政编码进行识别&am…...
leetcode3:无重复字符的最长子串
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “…...
ChatGPT让现在的软件都土掉渣了
我们家有两个娃,每次我们想要出去时订个酒店时都好麻烦。我在某程上找,我先看有没有家庭房,但家庭房很少,而且有些家庭房实际上只能睡得下两大一小。普通房间能不能睡得下四个人,那可是得查看很多信息,如床…...
IU5708D低静态电流同步升压DC-DC 控制器
IU5708D是高性能宽输入范围 (4.5V~40V) 同步升压控制器,支持高达52V的输出电压。输出电压采用恒定频率电流模式脉宽调制(PWM) 控制来实现调节。 芯片通过外部定时电阻器或通过与外部时钟信号同步来设置开关频率。在电阻编程模式下,开关频率可从50KHz编程…...
ubuntu查看软件安装路径
ubuntu怎么查看软件安装位置在哪 - 服务器 - 亿速云 1、执行程序查看 在终端使用type执行软件程序查看。 type google-chrome 2、通过进程查看对应的软件程序 在终端使用以下命令查看所有进程名。 ps -e 再使用以下过滤命令查看对应的进程信息即可。 ps aux|grep 软件名 …...
动态规划总结
1,01背包dp(每件物品最多选一次): 因为背包为0 的时候,什么都装不了,所以为零 ,就是他们的最优解。 最后一个单元格为最后的答案。 01背包模板 public class Knapsack {public static int kn…...
分享:数据库存储与索引技术(一)存储模型与索引结构演变
欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/ 本文来自OceanBase社区分享,仅限交流探讨。原作者马伟,长期从事互联网广告检索系统的研发,对数据库,编译器等领域也有浓厚兴趣。 文章目录综述传统单…...
ZeusAutoCode代码生成工具(开源)
ZeusAutoCode代码生成工具 一、简介 Zeus代码生成器是一款自动代码生成工具,旨在快速生成基础的CRUD代码,在此基础上也提供了一些高级功能,做到灵活配置,生成可扩展性强的代码。 后端是基于springboot、freemarker、mybatisplu…...
算法题记录
力扣的算法题:1154 给你一个字符串 date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。返回该日期是当年的第几天。 示例 1: 输入:date “2019-01-09” 输出:9 解释:给定日期是2019年的第九天。 示例…...
魔兽争霸3兼容性修复终极指南:告别闪退卡顿的智能解决方案
魔兽争霸3兼容性修复终极指南:告别闪退卡顿的智能解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3这款经典游戏在…...
3个关键问题揭示:为什么你需要DLSS版本管理器提升游戏体验
3个关键问题揭示:为什么你需要DLSS版本管理器提升游戏体验 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾因游戏卡顿而烦恼?是否想知道为什么别人的游戏画面更流畅?DLSS Sw…...
深入理解Istio架构:控制平面与数据平面核心组件全解析
深入理解Istio架构:控制平面与数据平面核心组件全解析 【免费下载链接】istio-handbook Istio服务网格进阶实战 项目地址: https://gitcode.com/gh_mirrors/is/istio-handbook Istio作为新一代服务网格(Service Mesh)的领航者…...
5分钟搞定百度网盘限速:baidu-wangpan-parse全功能指南
5分钟搞定百度网盘限速:baidu-wangpan-parse全功能指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘的限速而烦恼吗?想下载大文件却只…...
驱动教学模式革新:广凌智慧教学融合平台如何实现个性化教学?
随着高等教育从“知识为主”向“能力为先”深刻转型,千人千面的个性化学习已成为未来教育的核心诉求。传统的统一内容、统一路径的教学模式,已难以满足学生差异化的发展需要。如何借助技术手段实现真正的因材施教?广凌智慧教学融合平台以人工…...
Wireshark抓包提取NTLMv2 Hash实战指南
1. 这不是“黑客演示”,而是一次内网安全加固前的必做体检你有没有遇到过这样的情况:某天突然收到告警,说域控日志里出现了大量异常的NTLM认证失败记录;或者渗透测试报告里赫然写着“存在明文凭据泄露风险”,但你翻遍所…...
海外网红营销AI skills到底是什么?2026年出海品牌选型指南
这两年,海外网红营销圈冒出了一个新词——AI skills。很多人第一次听到时有点摸不着头脑:这不就是AI功能吗?换个名字而已?但其实,它和传统AI功能还真不是一回事。本文想做的事很简单:讲清楚这个新概念到底是…...
【数字图传第四步】Android App查看图传视频
接上回 前面三个章节完成之后,我们就有了一个图传的发送端(可以是esp32cam,也可以是esp32s3cam),一个是图传接收端(usb 摄像头 串口)。图传的发送端,淘宝上到处都是。接收端必须是…...
保姆级教程:在Ubuntu上配置Frida环境,搞定Android App的签名与CRC校验
从零构建Ubuntu下的Android逆向工作流:Frida实战签名与CRC校验 当第一次尝试在Linux环境下搭建Android逆向工具链时,我花了整整三天时间解决各种依赖冲突和设备连接问题。这份经历让我意识到,一个完整的Ubuntu环境配置指南对逆向新手有多重要…...
为什么你的盐印相总像P图?:Midjourney v6.2最新盐印相渲染漏洞(已验证387组测试图)及绕过方案
更多请点击: https://intelliparadigm.com 第一章:为什么你的盐印相总像P图? 盐印相(Salted Paper Print)作为19世纪早期摄影工艺的代表,其本质是依靠氯化钠与硝酸银反应生成感光氯化银,在阳光…...
