你“听”过这些经典排序算法吗?

算法是编程知识体系中的重要部分。当你已经掌握了一些编程基础之后,必然需要了解算法相关的知识,才能可以写出效率更高的代码。而排序算法又是算法中非常基础的内容。

我们用 Python 实现了一个可视(听)化的排序算法演示程序,给你们直观地展示一下 冒泡排序、选择排序、插入排序、快速排序、归并排序5种经典排序算法的执行过程。

视频内容

记得打开你的声音,片尾有小彩蛋

此程序的想法来源于一个国外视频:

https://www.bilibili.com/video/av685670

主体代码和可视化部分由 @Provin.M 实现,我在其基础上增加了音效。

可视化部分通过著名的 Python 图表库 matplotlib 中的 animation 实现。音效则是使用了 pyaudio 库。

这几种都是经典的排序算法,关于其实现及算法复杂度的讨论在几乎每一本算法书籍上都有提及,网上直接搜索一下也可以找出无数文章,因此本篇中不再一一赘述。如果大家对算法感兴趣,可以在留言区说下,之后也会考虑写一些算法方面的内容。

代码已上传 github。如果你对排序算法还不熟悉,可以尝试修改下代码里的排序数据、执行速度等参数,观察不同排序算法的过程和效率,以便于对这些排序算法的理解。而如果你已经对算法有一定了解,则可以考虑在此框架上增加更多的算法演示。

原文发布于微信公众号 - Crossin的编程教室(crossincode)

原文发表时间:2018-05-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

奇怪的数字0.577不断出现在我们身边

15920
来自专栏ACM小冰成长之路

HDU-5935-Car

ACM模版 描述 ? 题解 车子从起始位置 00 开始到达终点一共有 NN 个位置被标记,每个位置被标记的时间都是整数时间,并且车子速度在每段儿都可以理解为匀速...

19580
来自专栏诸葛青云的专栏

转行的萌新如何学习C语言?应不应该跳过C直接入手C++呢?

很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言?我是一个高级编程师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语...

17140
来自专栏PHP在线

如何学好数据结构和算法

数据结构和算法是计算机科学中最重要的课程,作为一名Google的软件工程师,我经常看到一些求职者或刚毕业的学生,他们对于数据结构和算法的学习是远远不够的。这不是...

35660
来自专栏xingoo, 一个梦想做发明家的程序员

【UML】——为什么要使用UML

以前一提到UML,就想到了复杂的流程图。很敬佩哪些想想就能画出整个系统的UML图的人,因为他们头脑中有整个软件架构的蓝图,这样在编写实现的时候,就会知道哪个...

27580
来自专栏ATYUN订阅号

一文教你提高算法和数据结构技能

? 如果你想在算法和数据结构上做得更好,你首先需要做的就是建立一个坚实的基础。这个基础可以通过多种方式学习,通过大学的计算机科学课程,或者参加一些编程训练营,...

32760
来自专栏闰土大叔

太原面经分享:如何用js实现返回斐波那契数列的第n个值的函数

值此高考来临之际,闲不住的我又双叒叕出发去面试攒经验了,去了公司交待一番流程后,面试官甩给了我一张A4纸,上面写着一道js算法笔试题(一开始我并不知道这是在考察...

12230
来自专栏java一日一条

程序员才看得明白的面试圣经

除了直接申请面试以外,一般说来,还有两种途径来获得面试的机会:由现在的雇主推荐,或者通过LinkedIn。虽然前者会快一些、更尊敬一些,但后者很可能是大部分应聘...

11610
来自专栏诸葛青云的专栏

系统学习C语言方法大全

很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言?我是一个高级编程师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语...

16200
来自专栏编程心路

从王者荣耀看设计模式-策略模式(java版)

曾经我也是一名玩农药的大学生,但现在已经弃了,别问我为什么(被坑爹队友坑的哭。。。)。而今天我们来把让农药变荣耀,我们来从王者荣耀中看设计模式的策略模式。

17450

扫码关注云+社区

领取腾讯云代金券