第一次印刷(2016年1月)
第二次印刷(2016年7月)红字是第2次印刷后发现的错误。
第三次印刷(2016年11月)绿字是第3次印刷后发现的错误。
最新勘误(2018.11):84页,293,314,324
表中负数表示“倒数”的行数。
页/行 | 误 | 正 |
2/11 | 检查测试阶段 | 检查编译阶段 |
4/21 | 实例将更好 | 实例能更好 |
7/10 | 由于上面算法中这几个分组 | 由于上面这几个分组 |
8/-2 | 传递给它…… | 传给它 |
14/13 | 存储单元具体大小 | 存储单元的具体大小 |
17/-7 | 将只所用 | 将只使用 |
20/6 | 上三角线矩阵 | 上三角矩阵 |
21/16 | list和tuple的元素访问和元素赋值 | list 和 tuple 的元素访问,list 的元素赋值 |
57/-6 | 引进datatime | 导入 datetime (注意是 date 不是 data) |
60/21 | 报道 | 报到 |
61/14 | 在加上 | 再加上 |
77/16-21 | 在建立空表 ... O(1)。(至本段落结束) | 创建空表时不分配元素存储区。遇到 insert 或 append 要求加入元素,系统第一次分配能容纳 4 个元素的存储区。继续扩容时采用的策略使每次扩容的比率趋近 1.125 倍。采用这样小的扩容比率,是为了避免在表中引进过多的空闲存储位置。前面讨论实际上说明,只要采用等比率扩容策略,就能保证尾端加入元素的 append 的平均时间复杂性为 O(1)。 |
78/17 | I, j = ... | i, j = ... |
81/16 | 表头变量 head 的链表 | 表头变量为 head 的链表 |
81/-11 | 只有图中的链接指向…… | 只有链接指向…… |
81/-6 | q.next = head.next | q.next = head |
84/-4 | 所用 | 用 |
95/-8 | q._next = p | q.next = p |
113/-4 | (可能更多) | (可能很多) |
119/-13 | 构造模式对象时做好对象的... | 构造模式对象,做好相应的... |
121/19 | 一字符串集 | 一个字符串集 |
123/25-26 |
if match_here(re, 1, text, 0): return 0 return -1 |
|
124/-13 | 位于单、双引号…… | 位于单引号和双引号 |
127/-11 | 总以010 | 可能以010 |
129/18 | 3+-5 | 3+ -5 【加减符号之间有个空格】 |
129/19 | 数值前面的字符串 | 找出表示数值的字符串 |
132/-15 | 由此受到 | 因此受到 |
143/注 | 可以判断别每个 | 可以判断每个 |
148/6 | while line[i].isspace(): | while i < llen and line[i].isspace(): |
150/5 | 删去最后的 TT | |
175/6 | m - 1 | n + 1 |
175/-16 | 右图下 | 右图上 |
175/-7 | 右图 | 右图下 |
193/12 | 规模更小同一问题 | 规模更小的同一个问题 |
204/16 | 假定t的实际参数 | 假定对应于t的实际参数 |
204/-3 | n = qu.dequeue() | t = qu.dequeue() |
205/17 | 左枝下行 | 左分支下行 |
205/-16 | 与此 | 因此 |
213/10 | 两个、一个和三个 | 两个、一个和两个 |
224/-14 | <vi, vj> 和 <vj, vi> | (vi, vj) 和 (vj, vi) |
225/23 | 始点或者终点 | 终点或者始点 |
226/15 | 从vi到vj连通并且从vj到vi也连通 | 从vi到vj以及从vj到vi都有路径 |
229 | 例7.8矩阵 | 第1行第2个元素应该是11,第2行第1个元素应该是 ∞ |
231 | 图7.7结点里的数字标号错误很多,正确的如右 | a:2 3 1;b:0 4 6 3;c:0 5 3;d:0 1 2 6; e:6 1;f:6 2;g:4 1 3 5 |
234/-15 | i += 1 | 对齐 |
246/2-3 | O(log|E|)<O(2×log|V|) | O(log|E|)≤O(2×log|V|) |
253/-15 | Ak | Ak |
253/-3 | A[i][k] A[k][j] | Ak[i][k] Ak[k][j] |
259图7.14 | a13:6 | a13:5 |
260图7.15 | v1[7,14] | v1[7,9] |
261/-10 | O(|V|) | O(|E|) |
262/-6 | 链接表 | 邻接表 |
262/-3 | 链接矩阵 | 邻接矩阵 |
272/-12 | (公式中的) log2n | log2n |
276/-4 | 居于通用性 | 具有通用性 |
277/18 | (6758172)10 | (1211620)10 |
279/10 | 探查一步后存入位置11 | 探查两步后存入位置1 |
279/11 | 最后的25存入位置1 | 最后的25存入位置2 |
279图 | 图8.4 | 最下一图58改到位置1,25改到位置2 |
280/8 | 当随着 | 但随着 |
287/-19 | 一个参数异常 | 一个异常 |
289/11 | 大于它的根结点…… | 大于根结点…… |
图8.7/8.8图题 | 二叉树排序树 | 二叉排序树 |
293/-1~-13 | 代码对齐排版错误 | 与前面while对齐 |
294/-17 | 检索完成后在实际插入 | 检索完成后再实际插入 |
294/-8 | 图6.7里的 | 图6.7和6.18里的 |
298/22 | 面对这种情况下 | 面对这种情况 |
299/9 | T(0,3) | T(0,2) |
302/8 | 的分布情况 | 的检索分布情况 |
305/-14 | 对称性序列 | 对称序列 |
312/13 | 叶节点 | 叶结点 |
313/6 | pi | pi+1 |
313/-19 | 如果结点其中 | 如果结点中 |
314/图8.22 | 原图有误(前两个小图) | 点击查看正确的图 |
317/2 | c) …… | 5. …… 【是第5题】 |
320/-5 | 考虑关键码称为 | 考虑的关键码称为 |
321/-18 | 以此数据序列 | 因此数据序列 |
323/18 | 处理了一个元素...延伸位置。 | 处理一个元素时留下一个空位,该空位与已排序段相邻,可以直接用作该段的延伸。 |
324/-14 | lst[j-1].key > x.key | lst[j-1].key >= x.key |
326/-1 | 原位排序算法 | 原地排序算法 |
334 | merge函数体第一行 | m 改为 mid |
337/13-14 | r | d |
338/13 | 空间复杂性 | 时间复杂性 |
EMAIL:qzy@math.pku.edu.cn | 通讯地址:100871,北京大学数学学院信息科学系 |
2019.7.10 |