
去年帮朋友准备面试,翻出一本厚厚的《算法导论》。
他看了十页就合上了,说这玩意儿不叫书,像天书。 公式、符号、伪代码一页页铺开,字都认识,连起来完全不知道在干嘛。
其实,很多人不是学不会算法,是一上来就被劝退了。
传统教材的问题也不难总结: 还没搞清楚“它在干嘛”,就被迫理解“它怎么写”。
顺序反了,自然很难受。
今天想分享一个项目:Hello-Algo

GitHub 地址:github.com/krahets/hello-algo 在线阅读:hello-algo.com
作者是 Krahets,一个开发者 在GitHub上已经攒了很高的热度,关键是完全免费开源。
把算法拆开,一步一步“演给你看”。
不是讲概念,也不是直接上代码,而是用动画把整个过程展开。
比如排序,不再是一段函数,而是一组会动的数组; 元素怎么交换、顺序怎么变化,全都能看到。

递归也不再是抽象描述,而是能直观看到函数一层层“进去”,再一层层“出来”。
很多原本需要靠脑补的过程,这里都帮你补好了。
第一,先看到过程,再理解原理
很多人卡在算法,不是卡在代码,而是根本不知道“它在做什么”。
画图有个好处: 你不用先懂原理,也能看懂流程。
先有感觉,再补概念,难度会低很多。
第二,抽象的东西被“具象化”了
像这些经典内容:
如果只是文字描述,很容易越看越糊。
一旦变成可视化过程,其实就没那么神秘了。 你能看到范围怎么缩、节点怎么走、结构怎么变化。
很多时候,看一遍动画,比盯着代码想半天更直接。
第三,代码是“跟着理解走”的
每个算法都配了多语言实现:

逻辑看明白了,再去对照代码,就不会有“每一行都认识,但不知道在干嘛”的情况。
对准备面试的人来说,这一步尤其重要 至少你是在“理解之后写代码”,而不是在“照抄模板”。
第四,结构是顺着来的
内容从基础开始:
一层一层往上走,没有那种跳来跳去的感觉。
每一章后面也有练习,可以用来确认自己到底有没有真的理解。
准备面试的
算法题基本绕不开。 这个项目适合用来过一遍基础,或者补某个卡住的点。
不需要从头啃厚书,先把逻辑跑通,效率会高很多。
非科班转行的
很多人不是能力问题,是起点问题。
直接啃传统教材,很容易在前几章就放弃 换成这种方式,至少能先把“恐惧感”降下来。
理解之后再补代码,比硬啃要轻松不少。
单纯好奇的
比如:
不打算刷题,也可以当作科普看。 以后再遇到这些概念,不至于一脸空白。
先看,再动手
动画可以帮你理解,但不等于你会了。
看完之后,最好把代码跑一遍。 改几个参数,观察一下变化,很多细节会在这一步补上。
别一口气刷太多
算法这种东西,节奏很重要。
一天看一两个点,然后自己走一遍逻辑,反而更稳。 看太多,最后容易只剩“看过”的错觉。
尽量用大一点的屏幕
手机也能看,但体验会打折。
动画这种东西,细节挺多,用电脑或平板更舒服。
你当初学算法的时候,是卡在哪一步?
觉得有用可以转发给正在准备面试的朋友,或者收藏起来备用。 学习这事,资料在精不在多,找到顺手的比盲目堆数量重要。
封面图来源于网络