本书全面讲述算法和数据结构的必备知识,具有以下几大特色。
算法领域的经典参考书
Sedgewick畅销著作的最新版,反映了经过几十年演化而成的算法核心知识体系
内容全面
全面论述排序、搜索、图处理和字符串处理的算法和数据结构,涵盖每位程序员应知应会的50种算法
全新修订的代码
全新的Java实现代码,采用模块化的编程风格,所有代码均可供读者使用
与实际应用相结合
在重要的科学、工程和商业应用环境下探讨算法,给出了算法的实际代码,而非同类著作常用的伪代码
富于智力趣味性
简明扼要的内容,用丰富的视觉元素展示的示例,精心设计的代码,详尽的历史和科学背景知识,各种难度的练习,这一切都将使读者手不释卷
科学的方法
用合适的数学模型精确地讨论算法性能,这些模型是在真实环境中得到验证的
与网络相结合
配套网站algs4.cs.princeton.edu提供了本书内容的摘要及相关的代码、测试数据、编程练习、教学课件等资源
算法(第4版) 下载 mobi epub pdf txt 电子书
目录
第1章 基础 1
1.1 基础编程模型 4
1.1.1 Java程序的基本结构 4
1.1.2 原始数据类型与表达式 6
1.1.3 语句 8
1.1.4 简便记法 9
1.1.5 数组 10
1.1.6 静态方法 12
1.1.7 API 16
1.1.8 字符串 20
1.1.9 输入输出 21
1.1.10 二分查找 28
1.1.11 展望 30
1.2 数据抽象 38
1.2.1 使用抽象数据类型 38
1.2.2 抽象数据类型举例 45
1.2.3 抽象数据类型的实现 52
1.2.4 更多抽象数据类型的实现 55
1.2.5 数据类型的设计 60
1.3 背包、队列和栈 74
1.3.1 API 74
1.3.2 集合类数据类型的实现 81
1.3.3 链表 89
1.3.4 综述 98
1.4 算法分析 108
1.4.1 科学方法 108
1.4.2 观察 108
1.4.3 数学模型 112
1.4.4 增长数量级的分类 117
1.4.5 设计更快的算法 118
1.4.6 倍率实验 121
1.4.7 注意事项 123
1.4.8 处理对于输入的依赖 124
1.4.9 内存 126
1.4.10 展望 129
1.5 案例研究:union-find算法 136
1.5.1 动态连通性 136
1.5.2 实现 140
1.5.3 展望 148
第2章 排序 152
2.1 初级排序算法 153
2.1.1 游戏规则 153
2.1.2 选择排序 155
2.1.3 插入排序 157
2.1.4 排序算法的可视化 159
2.1.5 比较两种排序算法 159
2.1.6 希尔排序 162
2.2 归并排序 170
2.2.1 原地归并的抽象方法 170
2.2.2 自顶向下的归并排序 171
2.2.3 自底向上的归并排序 175
2.2.4 排序算法的复杂度 177
2.3 快速排序 182
2.3.1 基本算法 182
2.3.2 性能特点 185
2.3.3 算法改进 187
2.4 优先队列 195
2.4.1 API 195
2.4.2 初级实现 197
2.4.3 堆的定义 198
2.4.4 堆的算法 199
2.4.5 堆排序 205
2.5 应用 214
2.5.1 将各种数据排序 214
2.5.2 我应该使用哪种排序算法 218
2.5.3 问题的归约 219
2.5.4 排序应用一览 221
第3章 查找 227
3.1 符号表 228
3.1.1 API 228
3.1.2 有序符号表 230
3.1.3 用例举例 233
3.1.4 无序链表中的顺序查找 235
3.1.5 有序数组中的二分查找 238
3.1.6 对二分查找的分析 242
3.1.7 预览 244
3.2 二叉查找树 250
3.2.1 基本实现 250
3.2.2 分析 255
3.2.3 有序性相关的方法与删除操作 257
3.3 平衡查找树 269
3.3.1 2-3查找树 269
3.3.2 红黑二叉查找树 275
3.3.3 实现 280
3.3.4 删除操作 282
3.3.5 红黑树的性质 284
3.4 散列表 293
3.4.1 散列函数 293
3.4.2 基于拉链法的散列表 297
3.4.3 基于线性探测法的散列表 300
3.4.4 调整数组大小 304
3.4.5 内存使用 306
3.5 应用 312
3.5.1 我应该使用符号表的哪种实现 312
3.5.2 集合的API 313
3.5.3 字典类用例 315
3.5.4 索引类用例 318
3.5.5 稀疏向量 322
第4章 图 329
4.1 无向图 331
4.1.1 术语表 331
4.1.2 表示无向图的数据类型 333
4.1.3 深度优先搜索 338
4.1.4 寻找路径 342
4.1.5 广度优先搜索 344
4.1.6 连通分量 349
4.1.7 符号图 352
4.1.8 总结 358
4.2 有向图 364
4.2.1 术语 364
4.2.2 有向图的数据类型 365
4.2.3 有向图中的可达性 367
4.2.4 环和有向无环图 369
4.2.5 有向图中的强连通性 378
4.2.6 总结 385
4.3 最小生成树 390
4.3.1 原理 391
4.3.2 加权无向图的数据类型 393
4.3.3 最小生成树的API和测试用例 396
4.3.4 Prim算法 398
4.3.5 Prim算法的即时实现 401
4.3.6 Kruskal算法 404
4.3.7 展望 407
4.4 最短路径 412
4.4.1 最短路径的性质 413
4.4.2 加权有向图的数据结构 414
4.4.3 最短路径算法的理论基础 420
4.4.4 Dijkstra算法 421
4.4.5 无环加权有向图中的最短路径算法 425
4.4.6 一般加权有向图中的最短路径问题 433
4.4.7 展望 445
第5章 字符串 451
5.1 字符串排序 455
5.1.1 键索引计数法 455
5.1.2 低位优先的字符串排序 458
5.1.3 高位优先的字符串排序 461
5.1.4 三向字符串快速排序 467
5.1.5 字符串排序算法的选择 470
5.2 单词查找树 474
5.2.1 单词查找树 475
5.2.2 单词查找树的性质 483
5.2.3 三向单词查找树 485
5.2.4 三向单词查找树的性质 487
5.2.5 应该使用字符串符号表的哪种实现 489
5.3 子字符串查找 493
5.3.1 历史简介 493
5.3.2 暴力子字符串查找算法 494
5.3.3 Knuth-Morris-Pratt子字符串查找算法 496
5.3.4 Boyer-Moore字符串查找算法 502
5.3.5 Rabin-Karp指纹字符串查找算法 505
5.3.6 总结 509
5.4 正则表达式 514
5.4.1 使用正则表达式描述模式 514
5.4.2 缩略写法 516
5.4.3 正则表达式的实际应用 517
5.4.4 非确定有限状态自动机 518
5.4.5 模拟NFA的运行 520
5.4.6 构造与正则表达式对应的
5.5 数据压缩 529
5.5.1 游戏规则 529
5.5.2 读写二进制数据 530
5.5.3 局限 533
5.5.4 热身运动:基因组 534
5.5.5 游程编码 537
5.5.6 霍夫曼压缩 540
第6章 背景 558
索引 611
· · · · · · (
收起)
评分
☆☆☆☆☆
模型理论算法(本书缺前两项),举例假设联系学会分别。
评分
☆☆☆☆☆
什么叫态度,什么叫好书,这就是最好的范例。
评分
☆☆☆☆☆
需要反复读的一本书。
评分
☆☆☆☆☆
果然还是需要在一个project里,边做边学…真可惜没时间能好好学一门新语言
评分
☆☆☆☆☆
这本书也非常牛,用java实现,我觉得这本书是最适合用来算法入门的,说它适合入门不是说它太浅,而是讲的深入浅出,非常容易理解,里面那些小彩图呀,啧啧,美极了!建议中英对照着读。
评分
☆☆☆☆☆
这是工作七年来读完的第一本大部头. 这本书是2014年买的, 买完后一直没下决心去读, 放了两年多才开始读. 为什么要读这本书呢? 首先我是Java程序员, 而这本书中的算法就是用Java语言描述的, 语言这门槛对我来说是没有的, 阅读时直接领会算法不必纠结于语言的语法. 其次, 我认为...
评分
☆☆☆☆☆
也许是最好的数据结构入门书籍 在中关村图书大厦看到的这本书,简单浏览了20分钟,说说自己的感受。 1,装帧很别致,大小比普通的书要小一圈,长宽比是一比一,适合放在随身包里阅读。 2,900余页,但内容不多,因为字体较大,而且页面面积很小,同时大量的代码和图示占据了...
评分
☆☆☆☆☆
按理說, Sedgewick 的書應該很有水平。但是看完後很失望。 這是一本給出每個算法具體實現的書,所以相比DPV或者CLRS,其介紹的內容要少得多,Dynamic Programming, Linear Programming這兩個有力的算法工具完全沒有濊及,計算理論(P/NP之類)的話題也基本少得可憐。相比300頁...
评分
☆☆☆☆☆
1.4.2.1的实例是文件中任意三个和为0的数组合的数量 翻译的是一个文件中所有和为0的三整数元组的数量 这种蹩脚的翻译就不说了 在推断公式的时候原版中公式推导步骤和变量地难以全都没了,这书看得7荤8醋的那些说好的人你们真的看过这个书么。 这书真是谁买谁上当啊。另外什...
评分
☆☆☆☆☆
按理說, Sedgewick 的書應該很有水平。但是看完後很失望。 這是一本給出每個算法具體實現的書,所以相比DPV或者CLRS,其介紹的內容要少得多,Dynamic Programming, Linear Programming這兩個有力的算法工具完全沒有濊及,計算理論(P/NP之類)的話題也基本少得可憐。相比300頁...