algorithm - 递减增量循环的时间复杂度

标签 algorithm time-complexity

我对以下代码的时间复杂度有点困惑(限制是硬编码引用示例):

loss = 3;
for(i=0;i<=10;)
{
    i += loss;
    loss = loss - 0.3; //loss keeps decreasing by some fixed value
}

这里,虽然变量i在不断增加接近终止循环,但它增加的速率本身是可变的。

最佳答案

在这个具体的例子中,时间复杂度是 O(1) 因为,因为它没有参数,它总是需要同样的时间来执行。

如果你的 for 循环中的那个数字 10 是一个参数 n 它会是 O(n) 对于一个小的 n ,如果 n 足够大,“loss”最终会变成负值,程序将永远运行。 “损失”对时间复杂度的影响是恒定的。

关于algorithm - 递减增量循环的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41171133/

相关文章:

c++ - 在伪随机数生成中使用整个列表

algorithm - 离散数学 Big-O 表示法 算法复杂性

c++ - C++中具有O(1)搜索时间复杂度的数据结构

python - 没有字符串连接的两个字符串的最长公共(public)序列 O(mn)

algorithm - 线性复杂度 O(20n) 能否支配多项式复杂度 O(n^2/3)?

c++ - 对big-O表示法感到困惑(具体示例)

c++ - 如何在 C++ 中实现通用哈希函数

algorithm - 压缩到固定长度

python - 使用单个 for 循环的列表中相同数字之间的距离

javascript - 如何考虑 Canvas 混合的 alpha channel (不透明度)(context.globalCompositeOperation)