while循环的大符号,乘法为0.8

时间:2017-07-17 11:47:34

标签: for-loop while-loop big-o

我遇到了很多关于while循环的大符号和循环内变量乘法的示例。我仍然无法理解。

这样的代码 for(int i = i; i <= n; i = i*2)被视为lgn,因为它会将值操纵2的倍数。

我也有这样的代码

while(i>N) 
{
  i/=2;
}

也被视为lgn,因为变量都被2操纵。但是,如果我将代码更改为类似

,这意味着相同吗?
while(x > 0.01){
    x = x* 0.8;
    y = y + x;              
}

主要关注的是,安全地说这个循环的运行时复杂性是log base 0.8

或者假设是log base 1.25

我确实理解log base 0.8log base 1.25未定义,因此while循环的运行时复杂性在技术上应为O(n)

1 个答案:

答案 0 :(得分:2)

循环次数n

给出

enter image description here

因此基数确实是1.25。但是,基数的变化只意味着整体的乘法因子,这不会影响算法的复杂度,因此它仍然是O(log n)