二进制搜索问题?

时间:2011-06-16 12:46:03

标签: algorithm computer-science binary-search

  

可能重复:
  What are the pitfalls in implementing binary search?

我正在浏览Binary Search的维基百科页面,并偶然发现了Knuth的引文:

“虽然二进制搜索的基本思想相对简单,但细节可能会非常棘手”

我记得在我的计算机科学课程中实施了几个二进制搜索,但是不记得它非常棘手。然而,这篇文章指出,90%的被调查专业人员在几小时后无法工作。我想假设这不是因为这些是非常糟糕的程序员,而是存在天真实现不能解释的边缘情况。

Knuth所指的细节是什么?如果实现二进制搜索算法,需要注意哪些常见问题?

注意我读过Bloch关于 Programming Pearls 错误的文章(中点的int溢出)。还有别的吗?

2 个答案:

答案 0 :(得分:3)

在我的日常工作中处于Java世界,我记得this。当我第一次阅读它时,我感到非常惊讶,所以这可能是唐纳德所谈论的事情之一。

答案 1 :(得分:2)

二元搜索棘手问题的最佳参考之一是Jon Bentley's Programming Pearls.

whole chapter 4解决了这个问题,它显示了许多错误的二进制搜索版本。

e.g。您希望找到大于或等于查询x的第一个数字。考虑其中+1 -1个问题。你怎么能证明你的程序完全正确?

考虑这些问题,你会发现它并不那么容易。