算法笔记 错误整理

本文主要记录在阅读《算法笔记》过程中发现的错误。

本人水平有限,仅凭浅薄的知识和个人的理解纠错,欢迎批评指正!

P109

原文:

问题:

(n, Range) 的函数值会与 (n + 1, 0) 重合,导致冲突。

修改:

假设一个整点的坐标是 (x, y) ,其中 0 <= x, y < Range ,那么可以令 hash 函数为 H(P) = X * Range + y ,这样数据范围内地任意一个整点都一定只有唯一的 hash 函数值。

P131

原文:

问题:

  • 函数的终止条件不应该是两个差值小于精度要求,而应该是 mid 的函数值小于要求
  • 在判断条件中,若 f(mid) == 0 ,应该直接返回值,而不是继续划分区间

修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const double eqs = 1e-5;
double fun(double x){ //根据函数的不同而不同
···
}
double solve(double L, double R){
double mid;
while (fabs(fun(mid) - 2) > eqs){
mid = (L + R) / 2;
if (fun(mid) > 0) right = mid;
else if (fun(mid) < 0) left = mid;
else break;
}
return mid;
}