while循环的时间复杂度

时间:2016-08-10 21:17:34

标签: while-loop time-complexity

的时间复杂度是多少?
x = 1
while( x < SomeValue )
{
    x *= 2;
}

我相信它是O(N),因为循环将继续进行固定的迭代次数。 我的假设是否正确?

2 个答案:

答案 0 :(得分:3)

时间复杂度为O(log(n)),因为MyTypes = [ getattr(types, 'TYPE_' + Type.upper() ] 呈指数增长。

答案 1 :(得分:1)

循环将在O(log n )时间内执行。希望数学能使推理更清晰。每次迭代都是恒定时间。要查找相对于SomeValue的迭代次数,我们称之为 t ,您可以看到 n th 之后的迭代次数迭代,x将具有值2 。循环结束x t 。因此,要查找满足或超过 t 所需的迭代次数,请为x插入2 并求解 t 。你得到 t = log 2( n )。因此,O(log n )时间。