数据结构篇——五分钟带你记住常见排序算法口诀

一、前言

因为考研,停更了许久

从现在开始恢复不定期更新

最近一段时间,主要分享考研时期学习数据结构的心得与经验

希望看到的小伙伴可以点个关注

另外其他类型的文章也会不定期更新

话不多说

我们直接开始讲解排序算法

本文是理论知识,无代码内容

请放心食用

二、引言

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次

所以叫做选无关。


一个不太聪明的分割线


最后是基数排序

尽管口诀中并没有给出

我们直接看表格

在这里插入图片描述

最好,平均,最坏都是一样的

所以直接记住就没问题了

同时基数排序考察较少

我当时是记得,混个眼熟就没足够了

五、总结

现在大家在背一下口诀

直冒泡
选希尔
快堆并基
希尔分界线
快速最特殊,快速最坏出叛徒,快速最优解
不稳各对称
选无关

对照着表格
在这里插入图片描述

然后按照我解释的部分

你品

你细品

可以对照着空表

进行知识输出

在这里插入图片描述
如果有帮到你

帮我点个赞吧!

以后可能会常更新这个速记系列!

  • 24
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值