Algorithm 二进制搜索问题?

Algorithm 二进制搜索问题?,algorithm,computer-science,binary-search,Algorithm,Computer Science,Binary Search,可能重复: 我在维基百科网页上浏览了好几年,无意中发现了克努斯的一句话: “虽然二进制搜索的基本思想相对简单,但细节可能会出人意料地棘手” 我记得在我的计算机科学课程中实施了一些二进制搜索,但我不记得这是多么棘手。然而,这篇文章指出,90%的被调查的专业人士在几个小时后无法工作。我想假设这并不是因为他们是糟糕的程序员,而是有一些简单的实现无法解释的边缘情况 Knuth也提到了哪些细节?如果实现二进制搜索算法,需要注意哪些常见问题 注意,我读了布洛赫关于编程珍珠错误(中点的int溢出)的文章。还

可能重复:

我在维基百科网页上浏览了好几年,无意中发现了克努斯的一句话:

“虽然二进制搜索的基本思想相对简单,但细节可能会出人意料地棘手”

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

Knuth也提到了哪些细节?如果实现二进制搜索算法,需要注意哪些常见问题


注意,我读了布洛赫关于编程珍珠错误(中点的int溢出)的文章。还有别的吗?

我记得我在Java世界的日常工作。当我第一次读到它时,我非常惊讶,所以这可能是Donald谈论的事情之一。

关于二进制搜索的棘手问题,最好的参考是

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

e、 g.您要查找大于或等于查询的第一个数字
x
。想想其中的
+1
-1
问题。你如何证明你的程序完全正确


想想这些问题,你会发现这并不容易

看起来像地狱一样,我保证。我试过解决问题,但我猜金钱术语是我刚刚发布的“陷阱”。但是没有足够长的答案可以涵盖二进制搜索可能出现错误的所有方面。:-)这解释了实现二进制搜索的几种不同方法,并有几个练习来教你在改变边界、比较等后行为如何变化。哇,Knuth对你来说是“唐纳德”?;-)呵呵,说错话了,最近我不得不带我的孩子去一家有名的快餐店。