algorithm - 二进制搜索比较次数

标签 algorithm

我为标准二进制搜索算法编写了这段递归代码。我只是想知道什么时候将 +1 添加到比较计数器?下面是伪代码

Inputs A: Array of Data;
key:Data; L,R:Integer;
Variables m:Integer;
Returns m:Integer;

Begin
If R<L then return -1; fi
m:= (R+L)/2
if key = A[m] then return m; fi
if key > A[m] then
return binSearch(A,key,m+1,R);
Else
return binSearch(A,key,L,m-1);
fi
End

检查第一个 if 语句中的 L 和 R 算作比较吗?有点困惑。

最佳答案

我相信,当您说比较时,您严格来说并不是指您有多少个 if,而是您试图达到二分查找的 O(log(n)) 复杂度?如果是这样,为什么不在函数的开头进行计数,这样您就可以计算调用的次数

关于algorithm - 二进制搜索比较次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13794819/

相关文章:

Python-什么词可以删除最多的连续字母并且仍然是字典有效词?

c - C语言求最短路径的方法

Java - 类数据类型 - 排序问题

java - 是否可以从整数的前缀和和后缀和中找到原始整数序列?

algorithm - 外层循环执行 log(n) 次的双 while 循环算法的渐近增长率

CDN分发的PHP算法

string - 如何测试字符串是否按顺序包含模式中的每个字符?

algorithm - 我怎样才能加快这个字谜算法

javascript - 最快的平台/语言独立哈希实现

python - 如何将这个简单的 5 个字节变回 4 个字节? (将 4 个字节转换为 5 个字节的算法是已知的)