算法设计手册是算法初学者的好书吗?

时间:2009-08-14 09:50:11

标签: algorithm

我很清楚Big-O是什么,我也知道一些基本的排序算法,但由于某些原因,我从来没有对它们感到满意,而且我一直忘记它们。我已经用Java,Python,C和C ++编程了4年;我是一个不错的程序员。现在,我想超越学习编程语言并开始学习算法。

我尝试了Carmen等人的“算法导论”。但是数学对我来说太密集了(或者,可能是,我对那本书中的数学太密集了。)

现在,我打算参加Steve Skiena的算法设计手册。你会根据我的情况推荐吗?如果您认为这不适合我,您还有其他建议吗?

谢谢你的时间!

9 个答案:

答案 0 :(得分:45)

我肯定会推荐Skiena的书。你已经开始学习算法,你也应该开始学习算法。

无论是谁编辑了这个答案并用数学这个词取代了算法这个词的最后一次出现:当我写这个时,我的意思是算法回答,我仍然指算法,用数学替换这个词实质上改变了答案。如果您认为数学是OP应该学习的,请发布您自己的答案。如果您不方便阅读下面的评论,您就会明白为什么我选择算法而不是数学这个词。

答案 1 :(得分:13)

对于您的目的以及浏览Cormen或Wikipedia,我建议不要使用“算法设计手册”。

在对基本算法主题进行简短介绍之后,第171-437页并没有真正告诉你算法如何工作或如何设计它们,而是更多关于存在什么算法以及在哪里找到它们的实现(有时它指的是你您需要购买的实施,如“线性规划”部分所述

例如,矩阵乘法有3页,给出了一些有用的例子,给出了朴素的O(N 3 )算法,并提到有更好的算法,如Strassen的O(N 2.81 )(不描述算法),并建议您使用LAPACK库。

因此,如果您想了解算法是如何工作的,而不是存在哪些算法以及在哪里找到它们的实现,我再次建议不要使用“算法设计手册”。

答案 2 :(得分:2)

我最近买了算法设计手册,但前几章才开始。这是一本很棒的书,但在我看来(从我到目前为止所读到的):

(1)它的密度不低于Cormen的密度。

(2)它更多地是关于算法的实际实现而不是学习算法。

答案 3 :(得分:1)

如果你能负担得起(或者你的雇主支付费用),并且你用Java编程,我建议: Data Structures and Algorithms in Java 。它涵盖了您在其他书籍中找到的相同主题,但如果您习惯使用Java编程,则可以轻松应用理解。例如,C ++数据结构书籍通常不会在哈希上花费大量时间,因为基于哈希的结构在C ++编程中并不常见。但是,在Java中,哈希很常见,每个对象都有一个hashCode方法。这本书结合了理论与实践的完美结合。

alt text http://ecx.images-amazon.com/images/I/51w6USIIpxL._SL160_.jpg

答案 4 :(得分:0)

如果你想要一个脚踏实地的方法,在try Algorithms in a Nutshell 中抛出一点点数学 - 我实际上只是享受阅读它,这比我能说的knuth masterwork更多。 (好的,knuth中有几页很有启发性,被称为 fun 。)

答案 5 :(得分:0)

不,我不这么认为。请尝试Robert Lafore的Data Structures and Algorithms in 24 Hours

答案 6 :(得分:-1)

答案 7 :(得分:-2)

以下是一些建议:

  • Aho& Ulman - “算法和数据结构”
  • Vhirt
  • Donald E. Knuth - “计算机编程艺术”

答案 8 :(得分:-3)

“算法导论”,Cormen,Leiserson&维斯特。见http://www.amazon.com/Introduction-Algorithms-Second-Thomas-Cormen/dp/0262032937