数据结构篇——五分钟带你记住常见排序算法口诀
作者:互联网
一、前言
因为考研,停更了许久
从现在开始恢复不定期更新
最近一段时间,主要分享考研时期学习数据结构的心得与经验
希望看到的小伙伴可以点个关注
另外其他类型的文章也会不定期更新
话不多说
我们直接开始讲解排序算法
本文是理论知识,无代码内容
请放心食用
二、引言
1、概念
排序,就是重新排列表中的元素,使表中的元素满足按关键字有序的过程。
为了查找方便,通常希望计算机中的表示按关键字有序的。(引自王道考研数据结构)
2、与生活相关
举一个简单的例子
大学期末考试。一个班里10同学,第一名可以获得一等奖学金,前三名可以获得二等奖学金,前五名获得三等奖学金。
以下是班里10名同学的成绩:
姓名,成绩均来自随机生成器
我们只有对所有同学的成绩进行排序,才能最终选出获得奖学金的名单
当然十个数据非常简单,人工排序就没问题。
但是全校评选奖学金,几百几千评选如果还选用这种方式,是不是有点过于低效了
那么使用代码去自动筛选就很有必要
(excel对于数据的排序筛选本质上也是排序的过程)
三、常见的排序分类
备注:如果你是个有基础的同学可以直接跳到第四部分,快速记忆
不管是408全国统考还是自主命题,都离不开以下的范围
导图中的排序可以归结为一张表格
注:折半插入排序与直接插入排序相比,仅仅减少了比较元素的次数,约为O(nlog2n),并且与待排序表的初始状态无关,进取决于表中元素个数n,其他都是一样的。
四、五分钟速记口诀
对照上面这张表,我们就可以简单记为:
直冒泡
选希尔
快堆并基
希尔分界线
快速最特殊,快速最坏出叛徒,快速最优解
不稳各对称
选无关
一个不太聪明的分割线
接下来我们对口诀进行解释,让大家充分理解其中的含义:
直冒泡
选希尔
快堆并基
这三句分别是对所有排序算法的缩略记忆
大家按照这个顺序很容易就记下来了。
一个不太聪明的分割线
希尔分界线
为什么说希尔是分界线?
因为希尔排序依赖于增量序列,即d1 = n/2, dk = di/2
并且当n在某个特定的范围时,希尔排序的时间复杂度约为O(n^1.3)
最坏情况下希尔排序的时间复杂度为O(n^2)
所以一般情况下我们只讨论希尔排序的最坏复杂度,故而没有最好和平均时间复杂度。
同时以希尔排序为分界线
O(n^2)的复杂度出现在以上的部分(快排的最坏例外,下一句会讲到)
一个不太聪明的分割线
快速最特殊,快速最坏出叛徒,快速最优解
为什么说快速排序最特殊呢?
因为快排拥有以下两个条件:
1、快排是内容排序中平均性能最优
2、快排的最好,平均时间复杂度是与空间复杂度相同的
并且在快速排序,堆排序,归并排序中,只有快速排序的最坏时间复杂度是0(n^2)
空间复杂度中也只有快排的复杂度为O(log2n)
足以看出快速排序中是比较特殊的
一个不太聪明的分割线
不稳各对称
不稳是指排序算法中的稳定性问题
可以看到表中一共八个排序
稳定有四个
不稳定有四个
以表格中为例,刚好不稳定性的排序是中间四个
在选择排序和希尔排序中画一条线
正好沿着这条线对称
因为不稳定所以离对称线近一些
最远的是稳定
一个不太聪明的分割线
选无关
选:选择排序
无关:元素间比较次数与序列的初始状态无关,始终是n(n-1)/2次
所以叫做选无关。
一个不太聪明的分割线
最后是基数排序
尽管口诀中并没有给出
我们直接看表格
最好,平均,最坏都是一样的
所以直接记住就没问题了
同时基数排序考察较少
我当时是记得,混个眼熟就没足够了
五、总结
现在大家在背一下口诀
直冒泡
选希尔
快堆并基
希尔分界线
快速最特殊,快速最坏出叛徒,快速最优解
不稳各对称
选无关
对照着表格
然后按照我解释的部分
你品
你细品
可以对照着空表
进行知识输出
如果有帮到你
帮我点个赞吧!
以后可能会常更新这个速记系列!
标签:排序,分割线,复杂度,口诀,五分钟,最坏,希尔,数据结构,快速 来源: https://blog.csdn.net/weixin_41377182/article/details/111996295