有一句话同学们应该都非常耳熟了:“编程=算法+数据结构”。
数据结构是程序的骨架,算法是程序的灵魂,但是很多CS出身的朋友都没能真的搞懂这两者……
为此帮大家筛选了6本口碑极佳的书籍,文末还为大家准备了一个小惊喜!希望能帮助同学们更好的了解算法与数据结构,拿下高薪offer。
入门
1.《算法图解》
非常适合0基础的同学来学习,最大卖点就是用图来解释算法,不枯燥。代码示意还是基于Pytho。绝对不会是《算法导论》一样让你直接从入门到放弃……
每章都是设定一个场景问题,再用合适的算法去求解。的确和副标题写的一样,是一本“像小说一样有趣的算法入门书”
口碑:豆瓣8.4分,1200人评分。
2.《漫画算法》
其实能看出来作者很用心,定位和《算法图解》接近。不过是漫画形式,轻松有趣。逻辑清晰,通俗易懂。
口碑:豆瓣9.1分,76人评分。
3.《算法》
Robert Sedgewick大神作品,基于 Java 进行代码实现,推荐有点基础的同学用这本书入门,也是经典入门书籍了。
用这本书中文版译者的来说,这本书有五大优点:
①图示清晰易懂:随便翻开这本书的一页,你会看到什么?图,图,还是图。这本书之所以厚,示意图多是一个主要原因。看完全书,纸上全是字的页码非常的少。
和国内教材的枯燥说教相比,这本书的图示可以让你从一个全新的角度理解以前你可能已经学习过的许多算法。
②代码量少:Java成为新一代的教学语言是有原因的。Java的面向对象以及垃圾收集等特性使得读者和学生可以最大限度的将注意力集中到算法本身上去。
这本书中的所有代码都不超过一页,只有很少的几处会有连续两、三页的代码,但每一页也都自成体系。这一点我非常欣赏,因为翻页会中断读者的思路。
③数学要求低:看过《算法导论》么?看过《计算理论》么?里面的证明是不是很让人抓狂?这种事情在这本书里不存在。这本书是从一个“实用”的角度来看算法。什么是证明算法有用好用实用的最好办法?除了理论上的保证之外,实现的简洁、运行时间的数字才是王道。
这本书里用的最多的就是数学归纳法,因为很多代码都是递归的。很少的地方用到了概率论。只有最后一章讲了一个比较深奥的Cook-Levin定理。不过说实在的我觉得作者并没有讲清楚,读者记住结论、领会精神也就好了。
④API设计:书中所有的算法都有一份自己的API。作者在书中实践了“契约式”编程,并向读者展示了这种方式的妙处。
关于API设计,作者也总结了一些原则,并用Java的标准库中的一些类做为例子进行了分析。这些分析无论是对刚刚入行的新手还是对老程序员都是非常有价值的。
⑤科学方法:这一点才是这本书的精髓。为什么这么说?因为中国学生缺少的正是这些。不要觉得第一章有250页,而其他讲解具体算法的任何一个章节都没有第一章长,就觉得第一章是在浪费版面。
作者在第一章之中为全书打下了基调,而科学的方法就是其中最重要的部分。所有算法的讲解方式,都遵循了“猜想-实验”的循环。这是人类探索自然的方式,也是科学研究的方式,也是我们所缺少的“科学精神”。
口碑:豆瓣9.4分,1034人评分。
经典
1.《算法导论》
如果你能自学《算法导论》,并且全读完、读懂了。我敬你是条汉子……
最好是有一个大佬贴身带着你学,不然的话这本书中有非常多算法的正确性、复杂度的证明、推导,数学公式,有的题目答案甚至要写6-7张纸……
口碑:豆瓣9.3分,4900人评分。
2.《数据结构与算法分析》
系统、全面、严谨,而且又不是特别难,是中外不少学校的教材。并且还有多编程语言版本。
口碑:豆瓣8.9分,1800人评分。
3.《计算机程序设计艺术》
作者:Donald Knuth,神一样的男人,这本书简直就是艺术品!
第一卷于1968年推出,可真正能读完读懂的人为数并不多(传比尔•盖茨费时几个月才读完一卷,然后说:“如果你想成为一个优秀的程序员,那就去读这个吧。”)
建议想学数据结构和算法方面的同学,可以先买一本,哪怕看不懂也可以供起来。
口碑:豆瓣9.4分,500人评分。