为while循环二进制搜索计算大O
calculating big O for a while loop binary search
我需要了解以下代码与线性搜索相比的效率:
int max = Integer.MAX_VALUE;
int min = 0;
while(min != max) {
int check = (max + min) / 2;
if(isLessThanX(check)) {
min = check;
} else {
max = check;
}
}
线性搜索是O(n),然而。。。如果我理解上面的代码,这是一个二进制搜索(我想)现在我的GUESS是,这个代码的大O是:O(n/2)<-这是正确的吗?
O(n/2)
与O(n)
完全相同。一般来说,对于n的任何函数,O(f(n)) == O(k*f(n))
,f
和任何常数k
。
您发布的算法确实使用二进制搜索,即O(log(n))
。如果你有8个项目,你的算法需要3次迭代才能运行。16要4,32要5…你看到模式了吗?
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 在二叉搜索树C++中计算平均值
- 如何计算函数的搜索复杂度
- 计算二叉搜索树C++中的节点数
- 如何在多维数组中搜索单个行,然后对某些行中的每个单个元素执行计算
- 计算搜索比较C++
- 如何使用二叉搜索计算搜索单词所需的时间
- C++二叉搜索树打印和深度计算
- 如何计算二叉搜索树中的比较
- 计算每个子树(二进制搜索树)具有特定属性的叶子的数量
- 为什么这个计算二进制搜索树中节点的递归函数总是返回比预期更大的结果
- 如何计算简单搜索的复杂性
- C++,A* 搜索程序无法正确计算到出口的距离
- 我该如何计算在二进制搜索树中进行的比较
- 为while循环二进制搜索计算大O
- 计算二叉搜索树的高度
- 32位指针(在32位计算机上)如何搜索1tb硬盘中的数据
- 二进制搜索树计算节点的坐标
- c++文件搜索数据库文件并计算下一行