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

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

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

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

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

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

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

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

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

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

(0)

相关推荐

  • 大神崛路上必备的10大练手的Python项目 墙裂建议收藏!

    前言 Python毫无疑问是一门很伟大的语言,最近几年,很多人都在Python的世界里转悠.很多小白在成长的路上,做一些练手的项目就显得尤为重要.一来让你知道你所学习的Python真的只是皮毛,二来巩 ...

  • 十大经典排序算法(动图演示)

    0.算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序: ...

  • 十大经典排序算法

    转载自:十大经典排序算法(动图演示) 0.算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为 ...

  • 十大经典排序算法 (Python版本)

    来源网络: https://github.com/hustcc/JS-Sorting-Algorithm 排序算法是<数据结构与算法>中最基本的算法之一. 排序算法可以分为内部排序和外部排 ...

  • 七大经典、常用排序算法的原理、Java 实现以及算法分析

    0. 前言 大家好,我是多选参数的程序锅,一个正在 neng 操作系统.学数据结构和算法以及 Java 的硬核菜鸡.数据结构和算法是我准备新开的坑,主要是因为自己在这块确实很弱,需要大补(残废了一般) ...

  • 冒泡排序,经典的排序算法

    在程序中处理数据时,为了提高抗干扰性.过滤掉干扰数据,我们通常会加入滤波算法,而冒泡排序是最经典.通用.易懂的算法. 1. 算法思想简单描述 冒泡排序要遍历每一个所要排列的数据,并且进行两两比较,如果 ...

  • 【经典分享】那些年我们听过的经典俄文歌曲……满满地都是回忆

    俄语歌曲«山楂树» 另外还有俄语歌曲«白桦树».俄语歌曲«Я люблю тебя».俄语歌曲«Три танкиста»等明天再发送. 感谢微友赵鎰康提供的资源.因只能发三个视频,因此先选择大家熟悉 ...

  • 那些年我们听过的经典俄文歌曲(视频)

    第九届世界合唱比赛 俄罗斯·索契 2016年7月6-16日 那些年,我们听过的经典俄文歌曲 俄语歌曲«喀秋莎» 俄语歌曲«莫斯科郊外的晚上» 俄语歌曲«白桦树» 俄语歌曲«Я люблю тебя» ...

  • 十种排序算法总结(冒泡、插入、选择、希尔、归并、堆、快速,计数,桶,基数)

    #include<iostream> using  namespace std; void swap1( int *left,  int *right) {      int temp = ...

  • 七大排序算法总结

    以下所有动图均来源于一像素博客园 以下代码均使用C 编写 完整代码请到这里下载 稳定排序算法:冒泡排序.插入排序.归并排序 时间复杂度不受数据影响:选择排序.归并排序.堆排序 时间复杂度基本小于n2: ...