首页 > 前端 > 排序算法的可视化展现

排序算法的可视化展现

前言

  排序算法(Sorting algorithm)是一种能将一串数据依照特定排序方式的最基本最常用的算法,常见的有冒泡排序、快速排序、插入排序、二叉树排序等等,下面这个表格总结了各种排序算法的复杂度与稳定性:

2016050311055495

不同的场景对排序算法的选择有着不同的要求,对每种排序算法的深入理解能帮助我们更好地选择合适的算法。关于排序算法的理论书籍或博客已经非常的多,下面列举一些可视化的排序展示,换种方式看算法,以一种更直观的方式理解排序算法的工作原理。

 

一、SORTING

官方主页:http://sorting.at/

2016050311054778

SORTING 支持同时查看对比多个排序算法,在进行排序时,每一个步奏都会被记录,故可以进行前进、后退、暂停等操作,非常适合理解不同排序算法的区别。

该项目的作者是Carlo Zapponi,他在sorting.at这样描述该项目的起源:“SORTING was born to create visual representations of sorting algorithms with the hope of finding visual patterns. ”

 

二、The Sound of Sorting

官方主页:http://panthema.net/2013/sound-of-sorting/

如果上面单单图像动画还不够过瘾,那么可以看看这个带声音的排序展示:15种排序算法可视化展示(优酷链接,源视频见YouTube)。

视频中的演示程序及其源码都可以可以在其项目主页中找到,作者给出了详细的说明,下图为演示程序界面。

2016050311054870

 

三、排序的舞蹈视频

官方主页:没找着:)

罗马尼亚Sapientia大学制作了一系列用舞蹈形式表现的各种排序算法的工作原理,舞跳得很有名族风情嘿嘿:

2016050311055251

总共是六种排序算法六个视频,希尔排序、选择排序等等,详情请戳:让程序员抓狂的排序算法教学视频

 

四、VisuAlgo

官方主页:http://visualgo.net/

在Google中输入“Visualizing Algorithms”或者“算法可视化”搜索,你会发现该网站排在搜索结果的首要位置,可见它的热门度。

VisuAlgo是由Steven Halim博士于2011年开发的一款帮助他的学生学习数据结构与算法的工具,尽管这是一个为自己的学校(National University of Singapore)的课程而特别研发的网站,但是Steven也在官网写道他们欢迎世界各地的编程学习者使用该网站,并为此提供了中文版及其它语言版本。同Sorting.at一样,VisuAlgo支持暂停、前进、后退等功能,另外,演示算法的时候,在右下角还可查看算法代码的执行过程:

201605281300462

顺带一提,该网站定位为“visualising data structures and algorithms through animation”,也就意味着,该网站不单单提供了排序算法的动画展示,该提供了数据结构以及搜索等等相关的内容,例如二叉搜索树、图的遍历、二分匹配等等。而且,根据官网上的介绍说,VisuAlgo是正在进行中的项目,该团队正在开发更多的高级算法,所以一起期待新的模块吧。

 

五、Visualizing Algorithms

官方主页:https://bost.ocks.org/mike/algorithms/

最后一个是国外大牛对算法的酷炫的描述,他是当前颇为流行的可视化js库 D3.js 的创建者以及The New York Times的一名编辑,致力于探究算法可视化对于学习和理解一些复杂的过程的价值。2014年6月他发表了一篇长长的文章,从梵高的名画到迷宫的生成,尽述算法的可视化。原文见:Visualizing Algorithms  , 译文见:算法可视化 。

2016050311175593

 

总结

在计算机科学中,排序是一门基础的也是非常重要的算法技术,熟练掌握各种排序算法对编程学习非常重要。

很多时候学习算法往往是捧起一本厚书死啃代码,非常枯燥,这种学习方法只会越学越没意思。本文着点于此,收录了一些比较有名的可视化算法的demo/tutorial,希望借此把算法的学习变得更直观、有趣一点,助于加深对算法的理解和记忆。

换个眼光看算法,换个角度学编程~

 


本文标题:排序算法的可视化展现
转载请注明出处,欢迎分享