算法(英文版·第4版) - Robert Sedgewick

算法(英文版·第4版)

Robert Sedgewick

出版时间

2012-03-04

ISBN

9787115271464

评分

★★★★★

标签

算法

书籍介绍

《算法(英文版•第4版)》作为算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。第4版具体给出了每位程序员应知应会的50个算法,提供了实际代码,而且这些Java代码实现采用了模块化的编程风格,读者可以方便地加以改造。本书配套网站提供了本书内容的摘要及更多的代码实现、测试数据、练习、教学课件等资源。

《算法(英文版•第4版)》适合用作大学教材或从业者的参考书。

AI导读
核心看点
  • 算法领域经典参考书,全面介绍必备知识
  • 针对排序搜索图处理字符串进行深度论述
  • 提供50个Java模块化代码实现,方便改造
适合谁读
  • 计算机专业大学生,适合作为教材使用
  • 希望系统学习算法与数据结构的从业者
  • 偏好Java实现、厌倦繁琐公式推导的读者
读前提醒
  • 建议配合官网代码、课件及Coursera课程
  • 重点阅读代码与图例,习题可搭配LeetCode
  • 红黑树与图论章节难度较大,需耐心钻研
读者共识
  • 比算法导论更易懂,适合自学与工程实践
  • 印刷精美,红黑树讲解透彻,视觉体验佳
  • 内容厚重,部分读者反映入门后阅读吃力

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

精彩摘录
  • "编写递归代码时最重要的有以下三点: * 递归总有一个最简单的情况——方法的第一条语句总是一个包含 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() 都会向该文件追加一段文本。"
作者简介
Robert Sedgewick,斯坦福大学博士,导师为 Donald E. Knuth,从1985年开始一直担任普林斯顿大学计算机科学系教授,曾任该系主任,也是 Adobe Systems 公司董事会成员,曾在 Xerox PARC、国防分析研究所(institute for Defense Analyses)和法国国家信息与自动化研究所(INRIA)从事研究工作。研究方向包括解析组合学、数据结构和算法的分析与设计、程序可视化等。 Kevin Wayne,康奈尔大学博士,普林斯顿大学计算机科学系高级讲师。研究方向包括算法的设计、分析和实现,特别是图和离散优化
目录
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.
Z-Library
收藏