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

Algorithm 算法设计手册是算法初学者的好书吗?,algorithm,Algorithm,我很清楚什么是大O,我也知道一些基本的排序算法,尽管出于某种原因,我对它们不太熟悉,而且总是忘记它们。我已经在java、python、C++和C++中编程4年了;我是一个不错的程序员。现在,我想超越学习编程语言,开始学习算法 我试过Cormen等人的《算法简介》,但数学对我来说太难了(或者,可能是,我对那本书中的数学太难了) 现在,我打算学习史蒂夫·斯基纳的算法设计手册。你能根据我的情况推荐吗?如果您认为这不是适合我的建议,您还有其他建议吗?以下是一些建议: Aho和Ulman-“算法和数据结

我很清楚什么是大O,我也知道一些基本的排序算法,尽管出于某种原因,我对它们不太熟悉,而且总是忘记它们。我已经在java、python、C++和C++中编程4年了;我是一个不错的程序员。现在,我想超越学习编程语言,开始学习算法

我试过Cormen等人的《算法简介》,但数学对我来说太难了(或者,可能是,我对那本书中的数学太难了)


现在,我打算学习史蒂夫·斯基纳的算法设计手册。你能根据我的情况推荐吗?如果您认为这不是适合我的建议,您还有其他建议吗?

以下是一些建议:

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

    • 我当然会推荐斯基纳的书。你已经开始学习算法了,你也应该开始学习算法


      无论是谁编辑了这个答案,并用“数学”一词替换了最后一次出现的“算法”:我在写这个答案时指的是算法,我仍然指算法,用“数学”一词替换这个词实质上改变了答案。如果你认为OP应该学习数学,那么就发表你自己的答案。如果您阅读下面的评论时有困难,您会理解我为什么选择“算法”而不是“数学”。

      Cormen,Leiserson&Rivest的“算法简介”。请参见

      我强烈推荐。

      如果你想要一种脚踏实地的方法,并加入一点数学知识,那就试试看吧——我其实很喜欢读这本书,这比我对克努特的杰作所能说的还要多。(好的,有几页很有启发性,可以称之为乐趣。)

      如果你能负担得起(或者你的雇主付钱),并且你用Java编程,我建议:。它涵盖了您在其他书籍中找到的相同主题,但如果您的用户习惯于使用Java编程,则可以很容易地应用理解。例如,C++数据结构的书籍通常不花费大量的时间在散列上,因为基于哈希的结构在C++编程中并不常见。然而,在Java中,哈希非常常见,每个对象都有一个哈希代码方法。这本书很好地结合了理论和实践

      我建议您不要使用“算法设计手册”来浏览Cormen或Wikipedia

      在简要介绍了基本算法主题之后,第171-437页实际上既没有教你算法是如何工作的,也没有教你如何设计它们,而是教你更多关于算法存在的内容以及在哪里找到它们的实现(有时它指的是你需要购买的实现,如线性规划部分)

      例如,关于矩阵乘法有3页,其中给出了一些有用的示例,介绍了naive O(N3)算法,并提到有更好的算法,如Strassen的O(N2.81)(未描述算法),建议您使用LAPACK库


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

      我最近买了《算法设计手册》,只看了前几章。这是一本很棒的书,但在我看来(从我迄今为止所读的内容来看):

      (1) 它的密度不亚于科曼


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

      不,我不这么认为。罗伯特·拉福尔(Robert Lafore)的尝试。

      与这个问题非常相似:+1“或者我的数学太难了”:D“你已经开始学习算法,你也应该开始学习算法。”-是我还是这没有多大意义?!这对我来说很有意义。这是另一种说法,“与其谈论算法,不如开始学习。”学习算法意味着学习复杂度、迭代、递归、分治、分枝定界等。学习算法意味着知道什么是快速排序、泡泡排序、Dijsktra算法、Kruskal算法,学习算法意味着应用一个可行的算法解决方案来识别一个问题,在必要时调整算法并实现它。试试Kandane的算法,给出一个矩阵而不是一个数组——你会知道我的意思。@MasterJoe2我选择了Robert Sedgewick和Kevin Wayne的算法,以及他们在Coursera上的视频讲座(如果没有这些,我不会走得很远)如果一个人的工作不涉及创建全新或复杂的数据结构和算法,比如页面排名算法、尝试数据结构等,那听起来就完美了。一个人如何在24小时内学会这些呢。说真的?你不能“浏览”科曼。你提到了171-437页。哪本书?@MasterJoe2:“算法设计手册”那张图片不见了。为什么你推荐这位默默无闻的作者的一本书,而不推荐这些作者的其他著名算法书籍,如科尔曼、塞吉威克、斯基纳、塔多斯和拉福尔?你为什么推荐这本书?它与一般推荐的书籍(如CLRS)有什么区别?