这本学习算法的电子书应该是我看过这方面最好的书了,代码例子有多种编程语言,JavaScript 也支持。
关于《 Hello 算法 》
《 Hello 算法 》,英文名称是 Hello algo,是一本关于编程中数据解构和算法入门的电子书,作者是毕业于上海交通大学的算法工程师 Krahets ,他在写书的过程中阅读了很多关于数据结构与算法的教材和文章,保证了准确性和高品质。令我惊叹的是,这本书的包含了很多动画和图解来帮助新手理解算法,阅读体验非常好,而且这个项目目前还在不断更新完善,是非常优质的算法入门学习教程。
这本书在发布的时候就得到了权威的推荐:
“一本通俗易懂的数据结构与算法入门书,引导读者手脑并用地学习,强烈推荐算法初学者阅读。”
—— 邓俊辉,清华大学计算机系教授
“如果我当年学数据结构与算法的时候有《Hello 算法》,学起来应该会简单 10 倍!”
—— 李沐,亚马逊资深首席科学家
本书特色
- 采用动画图解来演示原理,大部分内容清晰易懂,很容易学习;
- 在线的代码示例可以直接运行,帮助读者在实操中搞懂算法,学习效率很高;
- 代码示例支持 Java、C++、Python、Go、JS、TS、C#、Swift、Rust、Dart、Zig 等语言,读者可随意切换。
目录大纲
这本书一共分为 16 章,循序渐进,基础好的也可以根据自己需要跳章阅读。
- 第 1 章 初识算法
- 第 2 章 复杂度分析
- 第 3 章 数据结构
- 第 4 章 数组与链表
- 第 5 章 栈与队列
- 第 6 章 哈希表
- 第 7 章 树
- 第 8 章 堆
- 第 9 章 图
- 第 10 章 搜索
- 第 11 章 排序
- 第 12 章 分治
- 第 13 章 回溯
- 第 14 章 动态规划
- 第 15 章 贪心
- 第 16 章 附录
我的学习体验和建议
为什么要学习和了解算法?
我作为一个前端开发者,常年只和布局和界面、交互动效打交道,可能很多人觉得和算法扯不上关系,其实不然,就像本书的作者说的一样,算法其实无处不在,我只有了解了数据解构,才能很好地分析和解构项目的需求;只有对算法熟悉,才能写出性能优秀、简洁高效、高度可维护的代码。
况且我在 2 年前就开始接触后端开发,借助 JavaScript 语言的广泛性以及目前 Serverless 的流行,让我可以使用 JS 语法就可以去做后端业务开发,越是接触后端业务,越是发现自己储备的知识不够,当我碰到很多教程我完全看不下去时,其实就是因为不了解数据解构和算法,才导致写了很多垃圾代码。
算法抽象,学习困难
JS 是一门灵活的编程语言,由于是弱类型,而且也只用来处理界面,会导致编程习惯过于松散,导致写一些严谨功能会经常产生意想不到的报错,这种思维其实对算法的学习很不利,之前我也不是没有去学习过算法,但很多复杂的算法太抽象了,很难啃下来,学习效果很一般。
《 Hello 算法 》解救了我
《 Hello 算法 》这本书写得真的太好了,作者把很多抽象的算法用动画一步一步演示出来了,一遍看不明白,可以多次播放,就算忘记了也没关系,需要写相关代码的时候,再来重新复习一遍,直到学会,整个过程很顺畅!
特别是学习排序算法,这在工作中经常用到,本来对很多排序算法一知半解,写代码时需要逐行调试才能理解,通过这本书的图解,很容易就能看懂。
学习注意事项
尽管这本书对新手非常友好,但要看这本书,至少已经学会一门编程语言,能够阅读和编写简单代码,比如我是 JavaScript ,这本书不适合刚接触编程,语法还没熟悉的初学者,图解再生动你也看不懂。
另外,还需要有钻研求知的劲儿,算法属于高阶编程,简单易懂的书不能让我们不动脑就学会。
免费开源说明
《 Hello 算法 》是一本完全免费的电子书,书上的图片、文字以及代码、视频等内容采用了 CC BY-NC-SA-4.0 开源许可证。任何人都可以在线免费阅读,也可以在项目介绍主页去下载 PDF 离线版本,但我还是喜欢网页版,因为可以方便跳转章节。