Algorithms

Robert Sedgewick, Kevin Wayne

出版时间

2011-03-19

ISBN

9780321573513

评分

★★★★★
书籍介绍
这不是一本让你'看完就懂'的算法书,而是一场需要你和代码死磕的实践课。与《算法导论》的严谨伪码不同,本书用可运行的Java代码贯穿全书,从排序、搜索到图论、字符串处理,五十个程序员必知算法皆有实现可供直接调用。读者最记牢的,是它把'设计一份好API'当作现代软件的核心挑战反复强调:API要平衡实现难度、使用成本与抽象粒度,'只为用例提供它们所需要的,仅此而已'。书中递归三段论、2-3-4树理解红黑树等讲解被公认浅显易懂,图解到位。它适合愿意每天投入数小时、配合Coursera课程动手实现的实践派;若你只想要理论高度,CLRS或许更合意。
AI导读
核心看点
  • 涵盖排序、查找、图等50大核心算法
  • Java实现代码简洁,可直接用于项目
  • 图解详尽,红黑树等难点讲解透彻
读者共识
  • 比算法导论更侧重工程实践应用
  • 图文并茂,是极佳的算法入门书
  • 习题质量高,有助于检验编程习惯
精彩摘录
  • "编写递归代码时最重要的有以下三点: * 递归总有一个最简单的情况——方法的第一条语句总是一个包含 return 的条件语句。 * 递归调用总是去尝试解决一个规模更小的子问题,这样递归慈恩那个收敛到最简单的情况。 * 递归调用的父问题和尝试解决的子问题之间不应该有交集。"
  • "你应该将自己编写的每一个程序都当做一个日后可以重用的库。 * 编写用例,在实现中将计算过程分解成可控的部分。 * 明确静态方法库和与之对应的API(或者多个库的多个API)。 * 实现API和一个能够对方法进行独立测试的 main() 函数。 这种方法不仅能帮助你实现可重用的代码,而且能够教会你如何运用模块化编程来解决一个复杂的问题。 API 的目的是将调用和实现分离:除了API中给出的信息,调用者不需要知道实现的其他细节,而实现也不应考虑特殊的应用场景。API使我们能够广泛地重用那些为各种目的独立开发的代码。"
  • "这个模型的最重要之处在于通过静态方法库实现了模块化编程。我们可以构造许多个静态方法库(模块),一个库中的静态方法也能够调用另一个库中定义的静态方法。这能够带来许多好处: * 程序整体的代码量很大时,每次处理的模块大小仍然适中; * 可以共享和重用代码而无需重新实现; * 很容易用改进的实现替换老的实现; * 可以为解决编程问题建立合适的抽象模型; * 缩小调试范围"
  • "构建现代软件最重要也最有挑战的一项任务就是设计API。它需要经验、思考和反复的修改,但设计一份优秀的API所付出的所有时间都能从调试和代码复用所节省的时间中获得回报。为一个小程序给出一份API似乎有些多余,但你应该按照能够复用的方式编写每个程序。理想情况下,一份API应该能够清楚地说明所有可能的输入和副作用,然后我们应该先写出检查实现是否与API相符的程序。但不幸的是,计算机科学理论中一个叫做说明书问题(specification problem)的基础结论说明这个目标是不可能实现的。简单地说,这样一份说明书应该用一种类似于编程语言的形式语言编写。而从数学上可以证明,判定这样两个程序进行的计算"
  • "系统将“whitelist.txt”作为参数传递给main()"
  • "对于 int 和 double 来说,这些操作是我们熟悉的算数运算;对于 boolean 来说则是逻辑运算。"
  • "例如,BinarySearch 的 main(() 方法调用了系统库 java.utils.Arrays 的 sort() 方法,我们的库 StdIn 中的 readInts() 方法和 StdOut 库中的 println() 方法。"
  • "每次调用 StdOut.print() 或是 StdOt.println() 都会向该文件追加一段文本。"
用户评论
fundamentals, sorting , searching , graphs , strings , context .
典范教材
常看常新
胜过之前看过的算法了,之前的数据结构算法虽然也都算熟悉了,这本书依然补充了边边角角的知识,尤其之前看的算法时间复杂度都是用big-O来分析的,这本书的方法虽然复杂但是更准确。包括Stack,Queue,PQ,BST等等的数据结构也都提到了一些之前不太用的method,推荐。
讲的非常棒, 每一种算法都讲的浅显易懂; 而困难的部分其实是树和图; 红黑树的2-3-4树应该是一种可以理解的途径; 有了这个算法基础, 相关算法的领域问题都有了一个较明确的了解.
常读常新
一开始就被stdlib绊住,毫无进展😅你太好了我暂时配不上你,等我攒攒经验值回来刷你
java 版本的 一般般 不如算法导论
轻数学重应用,比算法导论简单很多,适合刷题前快速过一遍。对红黑树的讲解非常简洁清晰。
少了DP
下载
收藏