书单 | 10本程序员必读的算法书籍推荐!我们为你总结了十本各具特色的算法书,学习课程的同时,阅读这些书籍,快速前进,离你的理想目标更近一步!
1.《算法导论》 Thomas H. Corman
这是最著名的算法书之一,但要注意它的理论性非常强。目前它已经出到了第三版。我强烈建议每个程序员都在书架上放一本算法导论,但只用来做短暂的阅读和参考。因为这本书你是不可能一口气读完的。我第一本就推荐它的另一个理由是,它不限定任何编程语言,而且还有对应的教学课程。
2.《算法》 Robert Sedgewick & Kevin Wayne
这本书一直是我偏爱的算法参考,但现在我看的比较少了。你能在这本书里学到很多算法的背景知识,而且现在这本书也有了很多对应不同语言的版本(比如 Java 和 C++)。信不信由你,如果你已经掌握了一门编程语言,那么用这门语言学习算法的曲线就会不那么陡峭。
3.《算法设计手册》 Steve S. Skiena
这也是一本很棒的算法书,介绍的算法类型非常丰富,也包含很多代码。我尤其喜欢书中介绍算法在实际中是如何应用的。这有助于你了解一类算法可以用来解决怎样的一类问题。书中的代码是用 C 写的,但并不是很深奥,所以看起来很轻松。我在毕业快十年以后看这本书,也很快就掌握了一些图论算法。 这本书我已经买了有十年了,现在还是是不是会拿出来看一看。
4.《面试算法》 Adnan Aziz
这是一本必读的算法书,尤其对于要找工作的人来说。光看封面就知道这本书的内容很有趣:图灵的人脸是用许多张不同人物的缩略图拼成的。而书中就介绍了如何实现这样的拼接算法。我喜欢这本书,因为它解决问题的途径和目的比较独特。有时候怀着不同目的去学习同样的东西可能会更有助于理解。
5.《算法简述》
这是一本很棒的算法书,尤其对于 Java 程序员来讲。它着重从实现的角度来介绍各种算法,也不像很多其他经典教材那样包含很多数学。所有的算法都是用模式来描述的,也提供了学习它们的动机、解释用的图片、高层次的伪代码以及实际可运行的代码(C、C++、Java 和 Ruby)。书中也包含一些测试,用以证明不同算法之间理论上的性能差异。简而言之,这是程序员学习算法最好一本书之一。
6.《算法设计》 Kleinberg & Tardos
这应该是 Thomas Coren 的算法导论之后第二好的算法书。它不是一本导论,而是面向有经验的程序员。书中侧重为对基本算法比较熟悉的程序员介绍了一些算法设计的知识。你应该先看一本导论再来学习这本书。
7.《算法导论:一种新的途径》 Udi Manber
这是一本很适合自学的书,因为其中包含了几百个问题和例子。它是为提高读者的问题求解能力以及令读者掌握算法设计背后的原理所编写的。这有助于你提高解决问题和写代码的能力。
8.《算法设计与分析》 Anany Levitin
这也是每个程序员都应该在书架上放一本的算法书。在你学习完一本导论书以后,你可以通过这本书来学习一些进阶知识。
9.《数据结构和算法》 Aho, Ullman & Hopcroft
又一本精彩的数据结构和算法入门教材。这本书排版美观大方,很多不喜欢数学的程序员们都会喜欢它。
10.《Python算法》
这本书是为 Python 程序员所编写的。作者 Maguns Lie Hetland 同时也是另一本很受欢迎的 Python 入门教材《Beginning Python》的作者。这本书侧重介绍图论算法。正如我所说,算法跟具体的编程语言是无关的。你也可以用 Java 或者 C++ 来实现从这本书里学到算法。当然如果你已经会 Python,这就是一本绝佳的教材。
这就是每个程序员都应该读的10本算法书。当然,算法是一个很复杂的话题,很多算法只学习一遍是很难彻底理解的。遇到这种情况时,我建议把同一本书读两遍。并且,光读是不够的,你还要用自己喜欢的语言去实现算法。试着去实现你自己的 ArrayList 和 HashMap。学习算法的成果并不会马上就显露出来,但你能注意到自己在思考和解决问题的时候已经有了细微的变化,代码质量也会逐渐提高。毕竟我们常说,世界上有两种程序员,一种是懂算法的,另一种是不懂的。
|