算法(第4版) - [美] Robert Sedgewick

算法(第4版)

[美] Robert Sedgewick

出版时间

2012-09-30

ISBN

9787115293800

评分

★★★★★

标签

编程

书籍介绍

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

AI导读
核心看点
  • 经典算法教材,涵盖排序搜索图处理等50个核心算法
  • Java代码实现模块化,配套网站提供丰富测试数据与课件
  • 讲解清晰直观,图示丰富,比算法导论更友好易读
适合谁读
  • 具备Java基础,希望系统学习算法与数据结构的初学者
  • 觉得算法导论晦涩,寻求更实践导向入门书籍的读者
  • 计算机专业学生及需要查阅算法实现的程序员
读前提醒
  • 建议结合官网代码与练习,动手实践以加深理解
  • 未掌握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() 都会向该文件追加一段文本。"
作者简介
Robert Sedgewick 斯坦福大学博士(导师是Donald E. Knuth),从1985年开始一直担任普林斯顿大学计算机科学系教授,曾任该系主任,也是Adobe Systems公司董事会成员,曾在Xerox PARC、国防分析研究所(Institute for Defense Analyses)和法国国家信息与自动化研究所(INRIA)从事研究工作。他的研究方向包括解析组合学、数据结构和算法的分析与设计、程序可视化等。 Kevin Wayne 康奈尔大学博士,普林斯顿大学计算机科学系高级讲师。研究方向包括算法的设计、分析和实现,特别是图和离散优化。
目录
第1章  基础  1
1.1 基础编程模型  4
1.1.1 Java程序的基本结构  4
1.1.2 原始数据类型与表达式  6
1.1.3  语句  8

显示全部
用户评论
读了开头,并卖了(再见吧计算机算法😄
很详细,但是很多地方有点鸡肋,对于有一定编程经验的人来说
需要反复读的一本书。
买了原著但是没怎么读,学是学了黑马根据这本书编写的java数据结构与算法课程
看完这本书,我立马把严蔚敏那本书扔了
好难好难好难
极品。比老严那本书强多了
Weiss的数据结构本来就已经极好了,和这部一对比,居然成了“黄山归来不看岳”。在干《算法导论》前把这部看一遍还是很有必要的。算法导论重点在设计方法和分析技巧上,对必要算法的讲述不如这本
主次不分,罗里吧嗦,翻译不敢恭维,深度和广度也都一般
适合对算法进行基本了解
Z-Library
收藏