关于算法书籍的推荐
刘波老师好,我是无意之间入得您的坑。就是有一次学习canvas画图的时候,无意间找到你的免费课程,然后发现这个老师教的真好!而且我也想提升一下自己的算法能力,因为平时看书的时间比较多,想问下老师有没有什么书籍推荐!因为我是前端工程师,可能用不太上java的书籍,而且课程中的示例我都是尝试用JavaScript实现的,麻烦老师了。
正在回答
首先,在算法领域,我个人并不了解有什么好的 js 书籍;我个人也并不推荐使用 js 学习算法,这一点,在课程的第一章,我印象中我有所提及。我个人建议使用编译型语言学习算法,而非解释型语言。因为对于解释性语言,算法的性能极大的依赖解释器的实现,而非算法本身。从这个角度,虽然现在 Python 很热,但我都并不推荐使用 Python 学习算法。
实际上,很多经典的算法书籍,都是和语言无关的,比如大名鼎鼎的《算法导论》,其中只给出伪码。算法本身就是语言无关的。从这个角度看,我同时也很鼓励你在学懂这个课程的内容的基础上,使用 js 语言能够把课程的内容实现出来。使用一个全新的语言把课程中的内容实现出来,说明你真的学懂了。
==========
如果让我推荐算法书籍,我只推荐两本。
首推《算法4》。在我看来,《算法4》是最好的算法入门书,也是清华姚班的算法课程教材。
《算法4》的缺点是:1)过度语言相关,完全基于 Java;2)没有算法设计部分。
关于缺点1),在网上已经有很多人尝试使用其他语言实现《算法4》的代码了,比如你使用 js 语言,我随便一搜,这个代码仓可能可以参考:https://github.com/ohdonghoon1128/algorithms 当然,你也可以再找找有没有更全更好的资料。不管怎样,如果因为语言原因,不看这本书,就太可惜了。毕竟,算法本身是和语言无关的。
关于缺点2),我推荐第二本书,叫 Algorithms Design Mannual,有中文版,叫算法设计指南:https://union-click.jd.com/jdc?e=jdext-1330211040349356032-0&p=AyIGZRprFQESB10eXR0yVlgNRQQlW1dCFFlQCxxKQgFHRE5XDVULR0UVARIHXR5dHR1LQglGa2J4DEU3fQFFYAxlIHNfUXEUBwxtUnUOHjdVElsXChMGVRxYJQITBlUfXhYBFAZlK1sQMkRpVRpaFAMTAlUbWyUDIgdSGlMdARQGVhxbHQoiB10fa8OshtLdpIKlp8St%2B87WpdebrIGl3SUyIgRlQA5BS1cbVRlZFAESB1QeWhcHGgVRHFoXAQ4GZRtaFAIaAFITXhxsE2lWGlkUChsAUBpTJQIiBGVFNRRREg8FSVlCbEhcCBIQQl0TaVAbXBEBEAJlGVoUABA%3D
这本书主要强调算法设计。其中的代码是伪码的形式,和语言不想关。
另外,这本书的英文原版现在因为疫情完全免费,我在我的代码仓里保存了一份,如果你要有需要可以自取:https://github.com/liuyubobobo/ai-learning-roadmap/blob/master/downloads/2008_Book_TheAlgorithmDesignManual.pdf
==========
整体在算法领域,对于一般的软件工程师,我认为看过这两本书就足够了。但是如果你看完以后还对算法感兴趣,想进一步深入学习,我就建议读《算法导论》了。《算法导论》在对很多算法介绍的深度和广度上,都远超同类教材,但不适合初学。比如我在这篇文章中提到的大多数“高级算法”,算法导论中都有涉及:https://mp.weixin.qq.com/s?__biz=MzU4NTIxODYwMQ==&mid=2247486526&idx=2&sn=b958d606b3d57d15912389aa5282f308&chksm=fd8ca378cafb2a6eb1914486e80efccb51cbabd528fa5deba4d41d63cef9b15f746842c1df81&token=1818914488&lang=zh_CN#rd
这就是我的推荐了。当然,现在算法方面的书籍千千万万,你也可以尝试寻找一下是和你的书籍,请参考我的这篇文章的 2,3,4 点:https://mp.weixin.qq.com/s?__biz=MzU4NTIxODYwMQ==&mid=2247483836&idx=1&sn=90854aa76507281403e4dd9cd434a12b&chksm=fd8caefacafb27ec78f999fde4f1217c04c6e2ff28cf51fe511d8fa29d484d9281ff91de8c9c&token=1818914488&lang=zh_CN#rd
加油!:)
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星