Algorithms

Robert Sedgewick, Kevin Wayne

出版时间

2011-03-19

ISBN

9780321573513

评分

★★★★★
书籍介绍
Essential Information about Algorithms and Data Structures A Classic Reference The latest version of Sedgewick,s best-selling series, reflecting an indispensable body of knowledge developed over the past several decades. Broad Coverage Full treatment of data structures and algorithms for sorting, searching, graph processing, and string processing, including fifty algorithms every programmer should know. See
AI导读
核心看点
  • 涵盖排序、查找、图等50大核心算法
  • Java实现代码简洁,可直接用于项目
  • 图解详尽,红黑树等难点讲解透彻
适合谁读
  • Java程序员及算法初学者
  • 需系统掌握数据结构与算法者
  • 配合Coursera课程学习的学生
读前提醒
  • 建议搭配官方在线课程同步学习
  • 重视API设计与模块化编程思想
  • 英文版表述可能比中文版更清晰
读者共识
  • 比算法导论更侧重工程实践应用
  • 图文并茂,是极佳的算法入门书
  • 习题质量高,有助于检验编程习惯

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "编写递归代码时最重要的有以下三点: * 递归总有一个最简单的情况——方法的第一条语句总是一个包含 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
收藏