文章末尾附带GitHub开源下载地址。

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 AlgorithmMan,一套免费的算法演示神器 | .Net中文网 访问。

0、概述

我从2018年08月05日开始陆续在网上发表关于算法的系列博文,在《C#算法设计排序篇》写了11种常见的排序算法并为每一种算法开发了一个算法演示程序(AlgorithmMan by byteflying),这一系列工具提供了一种可视化的、可调节的、免费的算法演示方案,旨在用动画的方式帮助初学算法的同学更加轻松的进入算法的殿堂。现将这11个工具汇总在此博文,希望能给各位同学带来一些帮助。水平有限,若有瑕疵,见笑诸君了。

1、冒泡排序(Bubble Sort)

它重复地访问要排序的元素列,一次比较两个相邻的元素,如果他们的顺序不符合预期就把他们交换过来。访问元素的工作是重复地进行直到没有相邻元素需要交换时为止。

原文链接:C#算法设计排序篇之01-冒泡排序(附带动画演示程序) | .Net中文网

2、快速排序(Quick Sort)

快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

原文链接:C#算法设计排序篇之02-快速排序(附带动画演示程序) | .Net中文网

3、直接插入排序(Straight Insertion Sort)

直接插入排序是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。

原文链接:C#算法设计排序篇之03-直接插入排序(附带动画演示程序) | .Net中文网

4、选择排序(Selection Sort)

选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。

原文链接:C#算法设计排序篇之04-选择排序(附带动画演示程序) | .Net中文网

5、归并排序(Merge Sort)

归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

原文链接:C#算法设计排序篇之05-归并排序(附带动画演示程序) | .Net中文网

6、堆排序(Heap Sort)

堆排序是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的升序排序中,需要使用的就是大根堆,因为根据大根堆的要求可知,最大的值一定在堆顶。

原文链接:C#算法设计排序篇之06-堆排序(附带动画演示程序) | .Net中文网

7、希尔排序(Shell’s Sort)

希尔排序是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法把数组按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个数组恰被分成一组,算法终止。

原文链接:C#算法设计排序篇之07-希尔排序(附带动画演示程序) | .Net中文网

8、计数排序(Counting Sort)

计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的时间复杂度为线性的O(n+k)(其中k是整数的范围,即max – min + 1),快于任何比较排序算法,这是一种典型的空间换时间的算法。

原文链接:C#算法设计排序篇之08-计数排序(附带动画演示程序) | .Net中文网

9、基数排序(Radix Sort)

基数排序属于“分配式排序”(Distribution Sort),它是透过键值的部分信息,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O(n*log(r)*m) ,其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。

原文链接:C#算法设计排序篇之09-基数排序(附带动画演示程序) | .Net中文网

10、桶排序(Bucket Sort)

桶排序的工作原理是将数组根据一定的策略均匀的分到有限数量的桶子里,再对每个桶里的内容进行排序。桶排序是鸽巢排序的一种归纳结果,当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间O(n) 。桶排序并不是比较排序,它不受到O(n*log(n)) 的下限的影响。

原文链接:C#算法设计排序篇之10-桶排序(附带动画演示程序) | .Net中文网

11、二叉树排序(Binary Tree Sort)

二叉树排序是构建在二叉排序树(Binary Sort Tree)上的算法,二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:

  • 若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值;
  • 若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;
  • 左、右子树也分别为二叉排序树。

二叉树排序需要先生成一个二叉排序树,再使用中序遍历输出所有数据。

原文链接:C#算法设计排序篇之11-二叉树排序(附带动画演示程序) | .Net中文网

免费下载

GitHub下载地址:GitHub - byteflying/AlgorithmManRelease

总结

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 AlgorithmMan,一套免费的算法演示神器 | .Net中文网 访问。

以上是这11种常见排序算法工具的截图和地址,希望能给学习算法的同学一点点小小的帮助。

AlgorithmMan,一套免费的算法演示神器(开源动画演示版)相关推荐

  1. 免费的精品: Productivity Power Tools 动画演示

    Productivity Power Tools 是微软官方推出的 Visual Studio 扩展,被用以提高开发人员生产率.它的出现一定程度上弥补和完善了 Visual Studio 自身的不足, ...

  2. AlgorithmMan,一套免费的算法演示神器

    AlgorithmMan by Iori V1.1 概述 1.冒泡排序(Bubble Sort) 2.快速排序(Quick Sort) 3.直接插入排序(Straight Insertion Sort ...

  3. 十大经典排序算法及比较与分析 ( 动画演示 ) ( 可视化工具 )

    可视化工具及动画展示:旧金山大学 (usfca)|数据结构可视化工具 排序算法概念及描述:1.0 十大经典排序算法(文章部分内容引用自改文章) 参考:邓俊辉 的数据结构 本文未对排序算法概念进行详细说 ...

  4. Productivity Power Tools 动画演示(转)

    Productivity Power Tools 是微软官方推出的 Visual Studio 扩展,被用以提高开发人员生产率.它的出现一定程度上弥补和完善了 Visual Studio 自身的不足, ...

  5. base64编码_动画演示 Base 64 编码

    Base64 是一种十分流行的编码方式,仅仅使用 64 个字符加等号(=) 就可以以文本的形式表示所有的二进制数据了,因为它能够把二进制格式通过编码转换成可见字符,所有我们就可以通过的把二进制格式比如 ...

  6. 这可能是最强的AI算法可视化神器!

    仅凭数行代码,算法工程师从此不再996?迅速疯传全网,Star疯涨接近4K? 今天小编吐血推荐的超强AI算法可视化神器 -- VisualDL! 相比其他可视化工具,VisualDL功能更全面.易用性 ...

  7. 可能是世上最强的AI算法可视化神器!

    点击左上方蓝字关注我们 仅凭数行代码,算法工程师从此不再996?迅速疯传全网,Star疯涨接近4K? 今天小编吐血推荐的超强AI算法可视化神器 -- VisualDL! 相比其他可视化工具,Visua ...

  8. 精美素材分享:16套免费的扁平化图标下载

    在这篇文章中你可以看到16套华丽的扁平化图标素材,对于设计师来说非常有价值,能够帮助他们节省大量的时间.这些精美的扁平化图标可用于多种用途,如:GUI 设计,印刷材料,WordPress 主题,演示, ...

  9. 原创数据结构算法Flash动画演示课件-Action Script(AS)脚本实现

    2001年,和大学同学一起完成的毕业设计作品.cooling&bobo. 学习数据结构与算法,请访问:数据结构学习网站 http://xu-laoshi.cn/shujujiegou/ .&q ...

最新文章

  1. c1 c2在c语言中,c1和c2科目一样吗
  2. JVM 性能调优之定位问题 实战篇
  3. 实现滑动菜单(富文本版本)
  4. LeetCode Roman to Integer(罗马数字转换)
  5. 通俗讲解自底向上构建知识图谱全过程
  6. stream流_Stream流的这些操作,你得知道,对你工作有很大帮助
  7. 软考路:高项4流水账
  8. Uva 10817 校长的烦恼
  9. Codeforces 832 D Misha, Grisha and Underground
  10. C和C++的关系, namespace, struct , class
  11. 01费曼技巧 - 助你快速掌握软件测试知识
  12. html表格圣杯布局页面,Css圣杯布局
  13. keras中 shape参数如何设置
  14. java vcard格式_关于vcard 文件数据格式,以备不时之需
  15. 软件工程经济学期末复习
  16. Shor算法 or量子傅里叶变换?
  17. c 语言中逻辑运算符使用方法,C语言的逻辑运算符的使用
  18. 2015070304 - EffactiveJava笔记 - 第54条 谨慎使用本地方法
  19. 视频去水印工具-视频去水印哪个软件好用
  20. 编程大师论道:PHP的魅力和不足何在

热门文章

  1. 配置keepalived+LVS_DR
  2. 【AI视野·今日CV 计算机视觉论文速览 第195期】Tue, 11 May 2021
  3. 【三维深度学习】多视角场景点云重建模型PointMVS
  4. DataView对象的用法 1207
  5. mysql-索引操作
  6. PhpYun人才系统 与 Discuz 社区 通过 Ucenter 做会员整合
  7. Event Viewer 查看 Windows 系统日志
  8. 2.3.12 Python 函数进阶-装饰器
  9. 生产环境Nginx配置文件
  10. 一起学习linux之lamp脚本