确定带有断点的循环的大O值
Determining Big O of a loop with a break
给定一个查找素数的函数:
function find_the_prime(number) {
var found = false;
for(var i = 0; i < number; i++) {
if(number%i == 0) {
found = true;
break;
}
}
return found;
}
如果没有断点,函数在最佳情况下为O(1),在最坏情况下为O(n),一般情况为O(n)。
你能解释一下中断是如何影响大0的吗?真的吗?
你的代码是0(1),因为它总是在第二次循环时退出,因为数字%1 == 0。
如果您将代码更正为:
for(var i = 2; i < number; i++) {
那么它将是O(n),原因与@zmf所说的相同。
如果没有中断,即使在"最佳情况"下,它也可以更正确地称为O(n)
,因为它仍然随输入缩放。最小的输入不是"最佳情况",否则所有的算法都是微不足道的最佳情况O(1)
。
因此,没有中断的O(n)
和中断的O(n)
,但这并不意味着中断后的效果和速度没有明显改善。大o符号是关于算法如何随着输入的大小而扩展,而不是(一定)它有多快。有时候,对于特定的输入,O(n)
算法可能比O(log n)
算法更快。
这仍然是O(N),即使这是最坏的情况,O(N)是你对这个算法的称呼。其生长速率仍依赖于n
(如果你修复了这个bug)
实际上,有趣的是,你的答案是0(1)。不管你输入的是什么数字(只要它> 0),它总是在1
相关文章:
- jQuery:循环一个具有不同超时值的循环
- 在循环中分配json值时,值被覆盖
- 如何在下面的ES6循环中获得前面的文本
- 为什么“;未定义的“;在JavaScript中结束循环
- Javascript循环不会自我更新
- 如何使用jquery处理php循环通过元素
- 而循环只设置php中输入字段中的第一个值
- 循环遍历数组中的特定索引
- Javascript返回值只在循环中返回一次
- 按照选项卡索引的顺序循环一个jQuery选择
- 循环遍历以数组为值的Javascript对象
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 循环结束/推送到数组之前在页面上呈现EJS
- 在for循环中设置断点会导致在数组上使用原型时出错
- 无限循环,虽然我放了个断点
- 确定带有断点的循环的大O值
- javascript循环中的断点,用来制作按钮
- 在for循环中使用Javascript断点显示表
- 为什么我们要在JavaScript循环中使用断点?