algorithm - 如何确定二进制搜索中的边界或迭代次数?

标签 algorithm binary-search

在实现二分搜索时,我们有两种方法来决定何时终止:当搜索空间小于某个预定界限时终止或进行固定次数的迭代时终止。所以我的问题基本上是,如何确定这些边界或我们可以终止算法后的迭代次数。是否有任何预定义的算法或过程?

最佳答案

我想您正在对某个 double 值执行的那种二分查找。因此,您需要尽可能准确,并对迭代次数进行一些限制。

在二分搜索中进行第 i 次迭代后,您剩下的样本空间最多为(高-低)/2^i 大。

现在,根据您希望此值接近的程度,您必须设置 i 的值。

例如:

high = 100000
low = 0

第 30 次迭代后,留给您的样本空间将小至 0.00009313225

这意味着对于此范围,在第 30 次迭代后的最坏情况下,确切位置将相距 0.00009313225 距离。

关于algorithm - 如何确定二进制搜索中的边界或迭代次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42509777/

相关文章:

带有 float 的Java插值搜索

c++ - 生成保证顺序执行吗?

c# - 如何在 C# 中使用 QuickGraph 渲染缩进树?

java - 除了维基百科页面上列出的那个,还有其他 Java quines 吗?

java - 为什么 java Arrays.binarySearch 在未找到时返回 (-(insertion point) - 1)

python - 将数字列表拆分为 n 个 block ,使这些 block 具有(接近)相等的总和并保持原始顺序

java - 当我尝试在 java 中运行下面的二分搜索代码时,它会抛出 ArrayOutOfExcepetion。任何人都可以看一下并告诉我哪里出了问题吗?

python - python 中 std::lower_bound 和 std::upper_bound C++ 算法的等价物是什么?

if-statement - Elixir 二分查找

c++ - 递归二进制搜索 'Out of Range'