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

时间:2017-02-28 13:16:06

标签: algorithm binary-search

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

2 个答案:

答案 0 :(得分:0)

假设你的函数是一些单调函数f(i). 我认为没有捕获所有策略这实际上取决于问题或功能。

但是我们可以找到一个绑定的方法只是检查以下内容:

while(f(i)< user defined statement):
    i*=a     (a= 2,3,4,5)   depending on your problem

所以你找到的i是你的上限,你可以说你的下界是i/2

您提到的user defined statement可能会出现此错误。但你应该澄清你的问题!

答案 1 :(得分:0)

我想你正在执行的二进制搜索可能是一些双重值。因此,您需要尽可能准确,并对迭代次数有一些限制。

在二进制搜索中使用ith迭代,你留下的样本空间最多(高 - 低)/ 2 ^ i大。

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

例如

high = 100000
low = 0

在第30次迭代后,您留下的样本空间将小到0.00009313225

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