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

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 可获得资料。

8654 次点击
所在节点    推广
40 条回复
singlepig
2018-12-03 09:22:48 +08:00
楼主,7 堆排序和 6 的图是一样的
CoderOnePolo
2018-12-03 09:28:35 +08:00
@singlepig 不好意思,上传错了
RyougiShiki
2018-12-03 09:31:22 +08:00
不错。编程领域需要设计,图明白多了。
CoderOnePolo
2018-12-03 09:35:42 +08:00
@RyougiShiki 感谢肯定。也是因为之前学这个的时候太抽象了,感觉还是具体化就好理解了。
zxgfy12
2018-12-03 09:52:44 +08:00
这个很不错,特别是给入门的看。
话说这种动图,是用什么工具来做呢?
richzhu
2018-12-03 09:55:07 +08:00
我前几天下载这个 APP 啦,哈哈哈~
mogami95
2018-12-03 09:58:16 +08:00
漂亮!
thfurior
2018-12-03 09:59:57 +08:00
不错,很清楚
jingyulong
2018-12-03 10:01:46 +08:00
从初学者的角度来写,不错的👍
CoderOnePolo
2018-12-03 10:04:37 +08:00
@zxgfy12 都是自己用 PPT 做的,做的目的就是给初学者入门用的,希望能更好的理解。
CoderOnePolo
2018-12-03 10:05:47 +08:00
@richzhu 是哪个 APP,我下载下来学习参考一下^_^
CoderOnePolo
2018-12-03 10:06:33 +08:00
@jingyulong
@thfurior
@mogami95
感谢肯定,欢迎一起学习!
richzhu
2018-12-03 10:11:47 +08:00
@CoderOnePolo 苹果商店搜 “算法动画图解” 😀
CoderOnePolo
2018-12-03 10:17:06 +08:00
@richzhu 收到,感谢!!!
vanishcode
2018-12-03 10:20:05 +08:00
楼主这个也挺好的。我之前学数据结构的时候用的 visualgo https://visualgo.net/zh
trait
2018-12-03 10:21:22 +08:00
楼主画个 timsort 吧,算是比较快的,好多语言的内置算法
ilunny
2018-12-03 10:26:58 +08:00
为什么冒泡排序最好情况是 O(n)
IdJoel
2018-12-03 11:27:01 +08:00
非常棒 感谢
CoderOnePolo
2018-12-03 11:30:55 +08:00
@vanishcode
@IdJoel 感谢肯定,欢迎收藏关注。


@trait 我研究一下


@ilunny O(n)已经是很快的
hxz6688
2018-12-03 11:52:41 +08:00
感觉不错的

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

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

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

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

© 2021 V2EX