【发布时间】:2011-09-16 08:29:57
【问题描述】:
我在阅读Binary Search 的维基百科页面时偶然发现了下面 Knuth 的一句话:
“虽然二分查找的基本思想比较简单,但细节却出奇的复杂”
我记得在我的计算机科学课程中实施了几个二分搜索,但不记得它非常棘手。然而,这篇文章指出,90% 的接受调查的专业人士在几个小时后都无法工作。我想假设这不是因为这些程序员是糟糕的程序员,而是存在一些幼稚的实现无法解决的边缘情况。
Knuth 还提到了哪些细节?实现二分搜索算法时需要注意哪些常见问题?
注意,我读过 Bloch 的那篇关于 Programming Pearls 错误(中点的 int 溢出)的文章。还有什么吗?
【问题讨论】:
-
复制品看起来就像地狱一样——我保证。尝试过的问题,问题,但猜测金钱术语是“陷阱”
-
我刚刚发布了a long answer at the duplicate question。但是没有一个答案足以涵盖二进制搜索可能出错的所有方式。 :-)
-
This is one article 解释了实现二分搜索的几种不同方法,并提供了一些练习来教您更改边界、比较等后行为如何变化。
标签: algorithm computer-science binary-search