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

Sri*_*nth 41 algorithm

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

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

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

谢谢你的时间!

Hig*_*ark 49

我当然会推荐Skiena的书.您已经开始学习算法,您也应该开始学习算法.

为了谁编辑这个答案,取而代之的字中的最后一次出现算法数学:我的意思是算法的时候我写了这样的回答,我还指算法,替换字数学实质上改变了答案.如果您认为数学是OP应该学习的,请发布您自己的答案.如果您不方便阅读下面的评论,您就会理解为什么我选择算法这个词而不是数学.

  • 学习算法意味着学习诸如复杂性,迭代,递归,分而治之,分支定界等等.学习算法意味着知道什么是快速排序,bubblesort,Dijsktra算法,Kruskal算法等. (23认同)
  • 这对我来说很有意义.这是另一种说法,"不是谈论算法,而是开始学习它." (20认同)
  • "你已经开始学习算法,你也应该开始学习算法." - 这是我还是这没有多大意义?! (12认同)

yai*_*chu 15

我会建议您使用"算法设计手册",以便用于浏览Cormen或Wikipedia.

在对基本算法主题进行简短介绍之后,第171-437页并没有真正教您算法如何工作或如何设计它们,而是更多地了解存在哪些算法以及在何处找到它们的实现(有时它会指向您实现将需要购买,如在线性编程部分)

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

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

  • 你不能"撇开"Cormen. (10认同)
  • @MasterJoe2:《算法设计手册》 (2认同)