算法(英文版·第4版)

Robert Sedgewick

出版时间

2012-03-04

ISBN

9787115271464

评分

★★★★★

标签

算法

书籍介绍
市面上讲算法的书汗牛充栋,但多数让人望而生畏:《算法导论》的公式推导劝退无数人,不少教材把数据结构当成算法的附属匆匆带过。这本书的反其道而行,恰恰是它最打动人的地方——它坚持
作者简介
Robert Sedgewick,斯坦福大学博士,导师为 Donald E. Knuth,从1985年开始一直担任普林斯顿大学计算机科学系教授,曾任该系主任,也是 Adobe Systems 公司董事会成员,曾在 Xerox PARC、国防分析研究所(institute for Defense Analyses)和法国国家信息与自动化研究所(INRIA)从事研究工作。研究方向包括解析组合学、数据结构和算法的分析与设计、程序可视化等。 Kevin Wayne,康奈尔大学博士,普林斯顿大学计算机科学系高级讲师。研究方向包括算法的设计、分析和实现,特别是图和离散优化
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() 都会向该文件追加一段文本。"
目录
1 Fundamentals   3
1.1 Basic Programming Model   8
1.2 Data Abstraction   64
1.3 Bags, Queues, and Stacks   120
1.4 Analysis of Algorithms   172

显示全部
用户评论
大神Robert Sedgewick!! 配合coursera course & website code & slides, 书有点多余了。。。
(暂无)
紅黑樹真是講絕了
配上教学视频,真的讲的太好了!推荐以视频为主!学到后面真的有点跟不上了,尤其是第五章,感觉难度突然上升了好几个等级,越到后面也越难集中精神看完,但是还是坚持下来了!要认真学的话,感觉需要从头再来一遍,而且是很认真的再来一遍。然后我就把算法导论那本书卖了,新书基本没翻过,有这本算法4已经够我学了😅
普林斯顿老爷子的coursera网课课本 嗯 接触到core system之后 越来越多碰到算法了 就得回来温习一下
深入浅出
从java开始的基础实现,排序、搜索、图、字符串、其他,内容不深但非常成体系,简洁的代码、图示、证明,入门很不错
@2017-01-28 10:30:22
一定要看英文版,不要看中文版! 一定要看英文版,不要看中文版! 一定要看英文版,不要看中文版!
The key to learning is persistence. The true spirit of alogrithm or computer at large may take long to understand and discover for beginners. The gain will be worth the pain.
下载
收藏