分享好友 最新动态首页 最新动态分类 切换频道
七大排序算法——快速排序,通俗易懂的思路讲解与图解(完整Java代码)
2024-12-26 07:47


排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。

通过算法进行排序后,这一组数就有序了, 但是要看两个相同的5的位置是否有改变。
5a仍在5b前面,那么这个排序算法就是稳定的
5a跑到了5b后面,那么这个排序算法就是不稳定的

一个稳定的排序算法可以做到不稳定
不稳定的排序算法一定做不到稳定。


至于为什么要讨论这个稳定性, 是为了以后应用到实际场景上。 比如,一场数学考试, 假设a用了30分钟做完了,并得了满分。
假设b用了一个小时做完了,并得了满分。 此时a与b都是得了满分,但是用的时间不一样,所以两个人的排名又会有所不同。



基本思想任取待排序元素序列中的某元素作为基准值,将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。

 

共有三种方法可以实现该思想。


 

挖坑发是后人对Hoare法的另一种实现方式。

 

 

需要排序的数列本身就是一个顺序或逆序的数列,此时找到的基准就会每次都分成极端的两组,一组一个数没有,另一组有n-1个数(这两组的边界一个是基准-1,一个是基准+1)


快速排序在最坏情况下,时间复杂度竟然达到了O(n2),这哪里快速啊,所以下面就要进行优化了。

共有两种方案: 1️⃣随机选取基准法,这要是倒霉起来,依然有可能会次次都随机选到最极端最坏的情况,所以这个不用。 2️⃣三数取中法,这个可以保证不会让你选到最极端最坏的情况。

三数取中法:在上面的算法中,我们的基准选取的都是left下标
而三数取中指的是在left,right,mid( (left + right)/2 )这三个下标在中选取一个中间值作为基准,不是最大也不是最小,就保证了不会出现极端情况。
出现了以上的最坏情况,也就是让快速排序变成了二分查找。

 
 


就像二叉树一样,每一组数据往下走一层都会被分成两组,而到了最后几层,则会因为数据量的庞大而被分成许多组进行递归,此时的递归开销就会很大,很有可能导致~~栈溢出~~

因此我们可以设定一个数量闸口,当每组的数据小的到了这个闸口,就采用比较简单的直接插入排序。

而且在快速排序的不断递归下,数据一定是越来越有序的,直接插入排序的效率也会更高。

此时即便是一开始就用直接插入排序,时间也会相差无几。


 

最新文章
计算机表格的名次怎么弄,excel表格函数名次怎么做
Excel中经常需要使用到名次函数进行对数据的一个排名操作,名次函数具体该如何使用呢?下下面学习啦给大家分享excel表格利用函数排列名次的方法,欢迎大家来到学习啦学习。excel表格利用函数排列名次的方法一步骤1:打开
漫画台纯净版
《漫画台纯净版》是一款提供丰富漫画资源和优质阅读体验的软件,它的特色在于多样的漫画资源、流畅的阅读体验和个性化推荐功能。优势在于高清流畅阅读、离线下载和多平台同步功能。功能包括分类浏览、书架管理和漫画更新提醒等。用户可以随
Sora爆火,普通人的10个赚钱机会
您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通
Redmi K80 5G手机16+512GB超值优惠
【手机优惠】Redmi K80 5G手机16+512GB超值优惠:天猫精选此款目前活动售价2899元,领取政府补贴,下单1件,实付低至2879.1元,近期好价。原价2899.00,到手价2879.1Redmi 红米 K80是小米推出的一款旗舰手机,具有强大的性能和卓越的摄影能
迷雾大陆辅助脚本自动搬砖挂机,VMOS云手机游戏托管教程!
2.冰箭推荐理由:升级分裂箭后,将其强化为冰箭。冰元素属性不仅提供高伤害,还可对敌人施加减速与冰冻效果。适用场景:面对速度较快的敌人或需要牵制的群体敌人时效果显著。二、专注技能加点:提升生存与机动性1.迷踪步法推荐理由:此技能
wp百度不收录 揭秘:为何WP站点遭遇百度不收录困境?
标题:《面对“WP百度不收录”挑战:深度剖析与应对策略》在数字时代,网站内容的可见性直接关系到品牌的影响力与商业价值然而,许多使用WordPress(简称WP)构建网站的企业和个人却遭遇了一个共同的难题——“WP百度不收录”这一现象不仅
怒薅羊毛:白嫖GitHub作为个人博客免费图床
说在前面 很多小伙伴私信反馈说,个人博客搭建完以后,写文章时,图片上传和存放成了一个问题。我看很多人都把图片放在仓库一起,然后试图通过相对路径的方式来引用图片,结果很多人插件使用错误,后期修改也麻烦,其实这在写博客时体验是
张文康建议儿童用药政策落地要有具体时间表
5 月 14 日上午会议拟定议程 (会议地点:上海佘山艾美酒店会议 ABC 厅) 变革,倒逼是一种方式 —-新思维新技术与药企新格局主持人王学恭 中国医药企业管理协会副会长09:00 - 09:30嘉宾:陈启宇上海复星医药集团董事长演讲内容:中国医药
一键智能标志在线生成器:免费自动设计神器,快速生成公司设计大全
生成Logo的过程往往包含以下几个步骤:1. 需求分析:明确的核心价值观、目标受众以及个性这些信息将作为设计Logo的依据。2. 素材准备:收集与相关的视觉元素,如颜色、字体、图形等这些素材将帮助更好地理解特点。3. 设计:利用专业的设计
相关文章
推荐文章
发表评论
0评