algorithm - 二进制搜索算法混淆

标签 algorithm search binary

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

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;
}

该代码在我完成的所有测试中都有效,而且速度不是更快吗?如果不是更快,有人可以解释第一段代码的逻辑吗?

最佳答案

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

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

关于algorithm - 二进制搜索算法混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9780849/

相关文章:

vim - 如何使用vim自定义缩进文件?

python - 在不使用内置 bin 函数的情况下将整数转换为二进制

c++ - 在一系列值之间生成随机 double

php - 什么逻辑最适合用于统计同一个人随时间阅读的文章?

algorithm - 无向图中的前向边

php - 在排名搜索查询中指定排名 PHP、MySQL

ruby-on-rails - Sunspot Solr Rails - 使用 'with' 搜索多个模型

c++ - 在 C++ 中管理二进制数据的缓冲区

algorithm - 证明大 O 符号

javascript - 在 XML 文档中搜索某个元素/属性值并返回该元素