的时间复杂度是多少?
x = 1
while( x < SomeValue )
{
x *= 2;
}
我相信它是O(N),因为循环将继续进行固定的迭代次数。 我的假设是否正确?
答案 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 )时间。