我正在阅读 Jon Bentley 的 Programming Pearls,第 2 版的第 9.3 节。
在第 94 页,Jon 给出了改进的二分搜索算法的实现,利用 n 为 1000 的事实(搜索 1000 个数字以找到目标)。
在程序的最后,它是:
if p > 1000 || x[p] != t
p = -1
我的问题是,如果 p 正好是 1000 怎么办?似乎当 p 为 1000 时,它也应该出错,例如:
if p >= 1000 || x[p] != t
p = -1
无论如何,这部分代码是从第 93 页上的代码翻译过来的,最后:
if p >= n || x[p] != t
p = -1
我的理解正确吗?我只是想知道这是否是一个错字,或者真的没有必要在条件中包含案例 p 是 1000 。
另一个问题是,在第 94 页自下而上的第 5~6 行中,它说:当第一次测试失败并且 l 保持为零时,程序按顺序计算 p 的位,最高有效位在前。
这里是什么意思?当第一次测试失败时,我不应该是-1,而不是0吗?
任何人都可以详细说明这个说法吗?
PS 我找不到 Jon 的电子邮件地址,否则,我会把这些问题发给他。:-(