二进制搜索算法混淆

时间:2012-03-20 03:06:17

标签: algorithm search binary

我一直在阅读我在互联网上找到的一些二进制搜索算法,并且在我遇到的所有示例中都注意到了这段代码。

if (query > contents[midIndex])
{
    minIndex = midIndex + 1;
}
else if (query < contents[midIndex])
{
    maxIndex = midIndex - 1;
}

为什么会这样?我试过这样做:

if (query > contents[midIndex])
{
    minIndex = midIndex;
    midIndex = (minIndex + maxIndex) / 2;
}
else if (query < contents[midIndex])
{
    maxIndex = midIndex;
    midIndex = (minIndex + maxIndex) / 2;
}

该代码适用于我所做的所有测试,是不是更快?如果不是更快,有人可以解释第一段代码的逻辑吗?

2 个答案:

答案 0 :(得分:1)

嗯,我只能说,第一部分根本不是二元搜索。 (+它似乎甚至没有重新计算midIndex变量)

二进制搜索的目的是将搜索“聚焦”在总范围的“一半”中,直到频谱缩小到我们一直在寻找的元素......

答案 1 :(得分:0)

 You can achieve binary search by loop or recursion and there are so many code 
在互联网上。二进制搜索的原理就像在书中搜索一页一样。页面是有序的,你每次都会查找一半。这是你第一段代码的原则。

 About the speed of the two segments,I think they are not whole.Binary search is 

不是那么容易,应该注意一些细节。请谷歌吧!