十大经典排序算法动画,看我就够了!

2018-12-03 08:59:13 +08:00
 CoderOnePolo

在前面的章节中详细的讲解分析了十大经典排序算法,本文将进行一个大总结同时分析它们的时间复杂度与稳定性。

排序算法是《数据结构与算法》中最基本的算法之一。

排序算法可以分为内部排序外部排序

内部排序是数据记录在内存中进行排序。

而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。

常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。

用一张图概括:

关于时间复杂度:

  1. 平方阶 (O(n2)) 排序 各类简单排序:直接插入、直接选择和冒泡排序。
  2. 线性对数阶 (O(nlog2n)) 排序 快速排序、堆排序和归并排序;
  3. O(n1+§)) 排序,§ 是介于 0 和 1 之间的常数。 希尔排序
  4. 线性阶 (O(n)) 排序 基数排序,此外还有桶、箱排序。

关于稳定性:

  1. 稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序。

  2. 不是稳定的排序算法:选择排序、快速排序、希尔排序、堆排序。

1. 冒泡排序

2. 选择排序

3. 插入排序

4. 希尔排序

5. 归并排序

6. 快速排序

7. 堆排序

8. 计数排序

9. 桶排序

10. 基数排序

Tip 为了演示更加清楚,本文中所有的动画都放慢了速度,因此 GIF 大小对比之前会有所增大,图片加载速度会变慢,如果你想获取所有的超清动画,在公众号 五分钟学算法 回复 v2ex 可获得资料。

8883 次点击
所在节点    推广
40 条回复
daweii
2018-12-03 11:55:49 +08:00
我的流量。。。
CoderOnePolo
2018-12-03 11:59:08 +08:00
@hxz6688 谢谢肯定

@daweii 流量是有点大,尴尬
reself
2018-12-03 13:24:30 +08:00
@ilunny 至少要遍历一次数组才能知道是否有序
KingHL
2018-12-03 13:28:09 +08:00
赞一个
Mexion
2018-12-03 13:28:50 +08:00
先马克
jevirs
2018-12-03 13:36:09 +08:00
内容不错哦,附上代码印象更加深刻
CoderOnePolo
2018-12-03 13:42:25 +08:00
@jevirs 在公众号系列里每一个排序动画都配上了几种语言的代码实现,可以关注看看🤔
loading
2018-12-03 14:06:19 +08:00
谷歌市场的算法动画的 app 是楼主的?

我设置三大金刚键后,底下按钮被挡。
CoderOnePolo
2018-12-03 14:10:06 +08:00
@loading 不是,我还没做过类似的 APP
anonymous256
2018-12-03 14:25:25 +08:00
有小地方想要较真一下。
我们说一个算法的时间复杂度是一个关于问题规模的函数,大 O 的表示法已经是它最坏的情况(忽略系数)。如果要准确的计算一个算法再最好 /平均 /最坏的表现,应该用函数表示,不应该直接用 O 符号。参考算法导论的 T(n)表示法。
anonymous256
2018-12-03 14:28:08 +08:00
感觉每个图做成一个专题,旁边附上伪码(pseudocode),下面写上该算法的各种语言实现方式。一定很受学习者欢迎~
CoderOnePolo
2018-12-03 14:38:05 +08:00
@anonymous256 目前每个图已经做成一个专题,这十个经典排序算法都用几种语言实现了,并且还配了伪码动画思路。文章在公众号里面可以看到^_^
zwh2698
2018-12-03 15:49:32 +08:00
赞👍
hei1000
2018-12-03 16:12:10 +08:00
不写成文章吗,这个不好放到 pocket 里面去啊
stebest
2018-12-03 17:17:16 +08:00
归并排序实际上有两种方式,时间复杂度一致。但比如在对于处理链表排序时候,两种方式的空间复杂度分别为 O(nlogn)和 O(1)
azhangbing
2018-12-03 17:29:44 +08:00
不错不错
july1995
2018-12-03 18:07:10 +08:00
优秀,考研党正在复习数据结构的查找与排序。
rayjoy
2018-12-03 20:20:36 +08:00
做的很用心了,收藏一下。
CoderOnePolo
2018-12-03 20:24:31 +08:00
@hei1000 文章都在微信公众号里面,以前发了几篇文章在这里,但感觉有点不好,就没全发。
CoderOnePolo
2018-12-03 20:26:43 +08:00
@rayjoy
@azhangbing 感谢肯定
@july1995 希望对你有帮助,公众号里还有其他类似的数据结构分析,有时间也可以看看~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/513678

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX