这个算法可视化网站太牛了

158 阅读4分钟

a4ecf4c459c1b32db4f5ac41f5380b13.png

文 | 闲欢\

来源:Python 技术「ID: pythonall」

d3636d0f8c486212b4104fcdf2e77ce1.png

算法对于程序员的重要性,犹如心脏对于人类一样。作为程序员,我们在工作中都会接触到算法,熟练掌握数据结构和算法的程序员,在工作中可以游刃有余。

因此,在程序员的面试中,一般或多或少地都会有算法有关的题目。这也直接带火了 LeetCode 这个刷题网站。不少求职者通过刷 LeetCode 来学习算法,进而准备大厂面试。

而算法对于大多数程序员来说,是枯燥乏味的,学习算法,味同嚼蜡。虽然数据结构和算法比较核心基础,但是好多人都是望而生畏,或者半途而废。

今天,我无意中发现了一个神奇的网站——VisuAlgo,可以减轻我们学习算法的痛苦过程,也许可以激起大家学习算法的热情。

首页

我们先来看看这个网站的首页:

e3b39fcdb6dbcb3c49561275625d932c.png

通过首页,你应该大概可以理解我说的“减轻学习算法的痛苦过程”的含义了。\

没错,这是一个算法可视化网站,它将我们常见的数据结构和算法用动画的方式展示其逻辑过程。

可能有人会说,这网站貌似是英文的,对于英文不好的人不太友好。

别担心,网站提供了三种语言切换,其中就包括中文。

476383d86bf43fa054724a59fa259207.png

开发团队

也许你跟我一样好奇:这么牛逼的网站,到底是谁开发的呢?

08cd640b925fd00edb0544f07a004bb2.png

这个网站的底部有个“团队”的标签,里面详细记载了参与网站建设的各阶段人员。这个项目是在2011年由新加坡国立大学的 Steven Halim 博士发起的,他是该校的一名计算机专业讲师。网站建设的初衷是帮助他的学生更好地理解和学习数据结构和算法,并进一步强化对各项知识点的吸收。没想到这个网站已被越来越开发者所知晓,并拿来作为学习算法的辅助工具。网站后续的建设也吸收了好多他的学生,知道2022年还在更新。\

算法

网站里面包含了排序、链表、哈希表、二叉搜索树、递归树、循环查找等常见算法动画。\

我们点击搜索框旁边的绿色按钮,可以看到网站包含的所有数据结构和算法:

c9572b8d22ffbe5b3def08561dfc0e5d.png

这里面相当于是这个网站所有数据结构和算法的一个标签索引,还有一些并没有翻译成中文。\

而网站首页展示的是 24 种数据结构和算法,其实每种详细页面里面是有好多其他同类型的算法的。

我们以排序为例,点击排序的方块,进入到排序的首页:

13b5a5ee9e2ae508c225da59e8fb915c.png

我们可以看到这个页面的左上角有一排 tab 标签,是显示的7种常见排序算法的英文缩写。中间展示的是关于排序算法的笔记。左下角是步骤控制选项,右下角是具体的逻辑步骤。\

再来看个快速排序的动画:

由于视频大小限制,这里选取了最大速度播放,大家自己在网站上可以将速度放慢点。\

笔记

针对这24种算法中的每一种,网站都给了一份笔记,可以点击卡片手写的按钮进入查看。

4983e16302a6fb8239276c86052cac7d.png

进入之后的网页是这样的:\

aaff1eae55b9449024b8f1fbb7d28cfc.png

可以看到,这里的内容跟我们上面视频中刚开始进入算法页面时,呈现出来的黑色文字卡片是对应的。这份笔记就跟老师上课时的备忘录一样,大家感兴趣可以详细看看。\

训练题

该网站还提供了一些算法练习题供学生训练,以便更进一步巩固自己的算法知识。点击卡片的“训练”按钮进入:\

817db682e44f694fd3f3682542a38d0d.png

这些问题都是可以直接通过系统自动生成与评测的。问题通过一些规则随机产生,学生答案提交后后台服务器会自动评测。\

据网站管理员透露,类似这种在线评测系统,已被世界各校的 CS 讲师采用,仅通过设置系统的在线测验权重,便能很快了解学生的算法掌握程度。

bf2d69afca88fe071ce5971eaa4efd1f.png

总结

这个网站的大体功能就介绍这么多,可以看出来,这位老师还是很用心的在维护网站的,这种精神真的值得钦佩!大家也不要辜负了这么好的一个网站,在需要学习算法的时候,到这个网站来看看,可以帮助你更好地更生动的理解算法。

福利

程序员必看经典书单