编程珠玑(第二版)笔记
目录
第一部分 基础
第1章 开篇 3
1.1 一次友好的对话 3
1.2 准确的问题描述 4
1.3 程序设计 4
1.4 实现概要 5
1.5 原理 6
1.6 习题 7
1.7 深入阅读 9
第2章 啊哈! 算法 11
2.1 三个问题 11
2.2 无处不在的二分搜索 12
2.3 基本操作的威力 13
2.4 排序 15
2.5 原理 16
2.6 习题 17
2.7 深入阅读 18
2.8 变位词程序的实现(边栏) 18
第3章 数据决定程序结构 21
3.1 一个调查程序 21
3.2 格式信函编程 23
3.3 一组示例 25
3.4 结构化数据 26
3.5 用于特殊数据的强大工具 27
3.6 原理 28
3.7 习题 29
3.8 深入阅读 30
第4章 编写正确的程序 33
4.1 二分搜索的挑战 33
4.2 编写程序 34
4.3 理解程序 36
4.4 原理 38
4.5 程序验证的角色 39
4.6 习题 40
4.7 深入阅读 42
第5章 编程小事 43
5.1 从伪代码到C程序 43
5.2 测试工具 44
5.3 断言的艺术 46
5.4 自动测试 48
5.5 计时 49
5.6 完整的程序 50
5.7 原理 51
5.8 习题 51
5.9 深入阅读 52
5.10 调试(边栏) 53
第二部分 性能
第6章 程序性能分析 57
6.1 实例研究 57
6.2 设计层面 59
6.3 原理 60
6.4 习题 61
6.5 深入阅读 61
第7章 粗略估算 63
7.1 基本技巧 64
7.2 性能估计 66
7.3 安全系数 68
7.4 Little定律 69
7.5 原理 70
7.6 习题 70
7.7 深入阅读 71
7.8 日常生活中的速算(边栏) 72
第8章 算法设计技术 73
8.1 问题及简单算法 73
8.2 两个平方算法 74
8.3 分治算法 75
8.4 扫描算法 77
8.5 实际运行时间 77
8.6 原理 79
8.7 习题 80
8.8 深入阅读 81
第9章 代码调优 83
9.1 典型的故事 83
9.2 急救方案集锦 84
9.3 大手术——二分搜索 88
9.4 原理 91
9.5 习题 92
9.6 深入阅读 94
第10章 节省空间 95
10.1 关键在于简单 95
10.2 示例问题 96
10.3 数据空间技术 99
10.4 代码空间技术 101
10.5 原理 103
10.6 习题 104
10.7 深入阅读 105
10.8 巨大的节省(边栏) 105
第三部分 应用
第11章 排序 109
11.1 插入排序 109
11.2 一种简单的快速排序 110
11.3 更好的几种快速排序 113
11.4 原理 115
11.5 习题 116
11.6 深入阅读 117
第12章 取样问题 119
12.1 问题 119
12.2 一种解决方案 120
12.3 设计空间 121
12.4 原理 123
12.5 习题 124
12.6 深入阅读 125
第13章 搜索 127
13.1 接口 127
13.2 线性结构 129
13.3 二分搜索树 132
13.4 用于整数的结构 134
13.5 原理 135
13.6 习题 136
13.7 深入阅读 137
13.8 一个实际搜索问题(边栏) 137
第14章 堆 141
14.1 数据结构 141
14.2 两个关键函数 143
14.3 优先级队列 145
14.4 一种排序算法 148
14.5 原理 150
14.6 习题 150
14.7 深入阅读 152
第15章 字符串 153
15.1 单词 153
15.2 短语 156
15.3 生成文本 158
15.4 原理 163
15.5 习题 163
15.6 深入阅读 164
第1版跋 165
第2版跋 167
附录A 算法分类 169
附录B 估算测试 173
附录C 时空开销模型 175
附录D 代码调优法则 181
附录E 用于搜索的C++类 187
部分习题提示 191
部分习题答案 195
索引 221
两个很牛叉的二分搜索。二分搜索的论文在1946年就提出了,但是真正完全正确的代码在1962年才真正出现。
//返回第一个值为t的下标, x[0...n-1]共n个
bsearch(Type t)
{
l = -1;
u = n;
while l + 1 != u
/*invariant: x[l] < t && x[u] >= t && l < u */
m = ( l + u ) / 2;
if x[m] < t
l = m
else
u = m
/*assert l+1 = u && x[l] < t && x[u] >= t */
p = u
if p >= n || x[p] != t
p = -1
return p
}
版本2:手动控制二分过程。
//1000以内的元素进行二分。
bserarch(Type t)
{
l = -1
if ( x[511] < t ) l = 1000 - 512
/* assert x[l] < t && x[l+512] >= t */
if ( x[l+256] < t ) l += 256
/* assert x[l] < t && x[l+256] >= t */
if ( x[l+128] < t ) l += 128
if ( x[l+64] < t ) l += 64
if ( x[l+32] < t ) l += 32
if ( x[l+16] < t ) l += 16
if ( x[l+8] < t ) l += 8
if ( x[l+4] < t ) l += 4
if ( x[l+2] < t ) l += 2
if ( x[l+1] < t ) l += 1
p = l + 1
if p > 1000 || x[p] != t
p = - 1
return p
}
粗略估计:
pai秒就是一个纳世纪。
任何事都应尽量简单,但不宜过于简单。
72法则可以用于估算指数过程增长,如果r*y=72.那么你的投资差不多会翻番。
Little定律:队列中物体的平均数量为进入速率与平均停留时间的乘积。
安全系数:在无法对全局做出清楚认识的前提下,应该用安全系数来弥补自己知识的局限性。例如比提供比预计好10倍的性能等。
分享到:
相关推荐
在阅读《编程珠玑 第2版(修订版)》时,你可以学习到以下关键知识点: 1. **算法与数据结构**:书中详细介绍了如何选择合适的数据结构来解决问题,以及如何高效地实现各种经典算法,如排序、搜索等。这些基础但至关...
编程珠玑 第2版 azw3格式电子书,适合kindle阅读 Jon Bentley是位于新泽西州Murray Hill的朗讯贝尔实验室计算机科学研究中心的技术委员会委员,Jon自1998年就成为Dr. Dobb's Joumal杂志的特约编辑,他的“编程珠玑”...
算法经典书籍编程珠玑第2版,这本书除了讲算法,更是讲述解决问题的思想。
编程珠玑 第2版 修订版 Jon Bentley著 黄倩等译,高清带目录,人民邮电出版社。
《编程珠玑(第 2版·修订版)》是计算机科学方面的经典名著。书的内容围绕程序设计人员面对的一系列实际问题展开。作者JonBentley以其独有...《编程珠玑(第 2版·修订版)》对各个层次的程序员都具有很高的阅读价值。
作者虽然没有给出解决这些问题的具体代码,但始终非常富有洞察力和创造力地围绕着这些折磨程序员的实际问题展开讨论,从而引导读者理解问题并学会解决问题的技能,这些都是程序员实际编程生涯中的基本技能。...
《编程珠玑》第二版中还引入了更多与现实世界编程挑战相关的话题,比如数据库查询优化、并发编程和分布式系统的概念。这些内容对于理解和解决现代软件工程中的复杂问题非常有帮助。 书中附带的源代码可以帮助读者更...
编程珠玑第2版_修订版_修订版_nodrm.epub 该格式是macbook ebook格式
编程珠玑第2版.pdf 本书是计算机科学方面的经典名著《编程珠玑》的姊妹篇,讲述了对于程序员有共性的知识。书中涵盖了程序员操纵程序的技术、程序员取舍的技巧、输入和输出设计以及算法示例,这些内容结合成一个...
《编程珠玑》第二版是一本经典的计算机科学书籍,作者为Jon Bentley。这本书不仅深入浅出地讲解了许多算法设计和程序优化方面的知识,而且还通过大量的实例来帮助读者理解和掌握这些概念。下面我们就来详细探讨一下...
作者虽然没有给出解决这些问题的具体代码,但始终非常富有洞察力和创造力地围绕着这些折磨程序员的实际问题展开讨论,从而引导读者理解问题并学会解决问题的技能,这些都是程序员实际编程生涯中的基本技能。...
《编程珠玑》第二版不仅是初学者的宝贵教材,也是经验丰富的程序员持续学习和提升的宝典。它通过实例展示了如何将理论知识转化为实际的编程技能,使读者在解决问题的过程中不断提升自己的编程智慧。
本书涉及的主题是计算机专业领域中更为迷人的一个方面:这是一些超出了可靠工程学范畴、位于洞察力和创造力王国忠的程序设计珍珠。如同珍珠来自于曾经折磨牡蛎的沙粒,程序设计的珍珠液来自于曾经折磨程序员的实际...
编程珠玑 第2版
《编程珠玑(第2版)》的特色是通过一些精心设计的有趣而又颇具指导意义的程序,对实用程序设计技巧及基本设计原则进行了透彻而睿智的描述,为复杂的编程...《编程珠玑(第2版)》对各个层次的程序员都具有很高的阅读价值。
2. **编程艺术**:《编程珠玑》强调了编写高效、可读和可维护代码的重要性。书中讨论了如何通过代码重构和模块化设计提升代码质量,以及如何通过测试和调试确保代码的正确性。 3. **磁盘I/O优化**:在第二版中,...
经典C语言书之编程珠玑第2版中文版 个人收藏