程珠玑 第2版
(美)乔恩 本特利(Jon Bentley)
出版时间: 2019
内容简介
本书是计算机科学方面的经典名。书的内容围绕程序设计人员面对的一系列实际问题展开。作者Jon Bentley 以其独有的洞察力和创造力,引导读者理解这些问题并学会解决方法,而这些正是程序员实际程生涯中至关重要的。本书的特色是通过一些精心设计的有趣而又颇具指导意义的程序,对实用程序设计技巧及基本设计原则进行了透彻而睿智的描述,为复杂的程问题提供了清晰而完备的解决思路。本书对各个层次的程序员都具有很高的阅读价值。
目录
第 一部分 基础
第 1章 开 篇 3
1.1 一次友好的对话 3
1.2 准确的问题描述 4
1.3 程序设计 4
1.4 实现概要 6
1.5 原理 7
1.6 习题 8
1.7 深入阅读 9
第 2章 啊哈!算法 11
2.1 三个问题 11
2.2 无处不在的二分搜索 12
2.3 基本操作的威力 14
2.4 排序 16
2.5 原理 17
2.6 习题 18
2.7 深入阅读 20
2.8 变位词程序的实现(边栏) 20
第3章 数据决定程序结构 23
3.1 一个调查程序 23
3.2 格式信函程 26
3.3 一组示例 28
3.4 结构化数据 29
3.5 用于特殊数据的强大工具 30
3.6 原理 32
3.7 习题 33
3.8 深入阅读 34
第4章 写正确的程序 37
4.1 二分搜索的挑战 37
4.2 写程序 38
4.3 理解程序 40
4.4 原理 43
4.5 程序验证的角色 44
4.6 习题 45
4.7 深入阅读 48
第5章 程小事 49
5.1 从伪代码到C程序 49
5.2 测试工具 51
5.3 断言的艺术 53
5.4 自动测试 55
5.5 计时 56
5.6 完整的程序 58
5.7 原理 59
5.8 习题 59
5.9 深入阅读 61
5.10 调试(边栏) 61
第二部分 性能
第6章 程序性能分析 65
6.1 实例研究 65
6.2 设计层面 67
6.3 原理 69
6.4 习题 69
6.5 深入阅读 70
第7章 粗略估算 71
7.1 基本技巧 72
7.2 性能估计 74
7.3 安全系数 76
7.4 Little定律 78
7.5 原理 79
7.6 习题 79
7.7 深入阅读 80
7.8 日常生活中的速算(边栏) 81
第8章 算法设计技术 83
8.1 问题及简单算法 83
8.2 两个平方算法 84
8.3 分治算法 86
8.4 扫描算法 87
8.5 实际运行时间 88
8.6 原理 90
8.7 习题 91
8.8 深入阅读 92
第9章 代码调优 95
9.1 典型的故事 95
9.2 急救方案集锦 96
9.3 大手术——二分搜索 101
9.4 原理 105
9.5 习题 106
9.6 深入阅读 108
第 10章 节省空间 109
10.1 关键在于简单 109
10.2 示例问题 110
10.3 数据空间技术 113
10.4 代码空间技术 116
10.5 原理 118
10.6 习题 119
10.7 深入阅读 120
10.8 巨大的节省(边栏) 121
第三部分 应用
第 11章 排 序 125
11.1 插入排序 125
11.2 一种简单的快速排序 127
11.3 更好的几种快速排序 130
11.4 原理 133
11.5 习题 133
11.6 深入阅读 135
第 12章 取样问题 137
12.1 问题 137
12.2 一种解决方案 138
12.3 设计空间 139
12.4 原理 142
12.5 习题 143
12.6 深入阅读 144
第 13章 搜 索 145
13.1 接口 145
13.2 线性结构 147
13.3 二分搜索树 151
13.4 用于整数的结构 153
13.5 原理 155
13.6 习题 156
13.7 深入阅读 157
13.8 一个实际搜索问题(边栏) 157
第 14章 堆 161
14.1 数据结构 161
14.2 两个关键函数 163
14.3 优先级队列 166
14.4 一种排序算法 169
14.5 原理 171
14.6 习题 172
14.7 深入阅读 174
第 15章 字符串 175
15.1 单词 175
15.2 短语 179
15.3 生成文本 182
15.4 原理 187
15.5 习题 188
15.6 深入阅读 189
第 1版跋 191
第 2版跋 195
附录A 算法分类 197
附录B 估算测试 203
附录C 时空开销模型 205
附录D 代码调优法则 211
附录E 用于搜索的C++类 217
部分习题提示 223
部分习题答案 229
索引 259