当我只把它算作一个操作时,我是否有可能完全过分思考操作的复杂性?这是我班上的一个作业问题。
Algorithm Power(n)
Pre: n :: Integer, n > 0
i = 1
while (i < n)
print i
i = i * 3
done
我完全不确定自己,并认为我过分思考这个问题
简化前的时间复杂度O(N)为O(n)= 1 +(3n +?+ 1) i = i * 3完成的次数是每次循环一次,但变量“i”每次迭代以加速的速度增长这实际上是重要还是我过度思考过多的东西?
它是O(n),因为它只是一个循环或更复杂的东西以及沿着O(log n)或O(n ^(1/3))的行由于“i”加速?< / p>
答案 0 :(得分:0)
你说的不是O(n)
。仅当循环计数器(在本例中为O(n)
)相对于i
线性增加时,单个循环级别才对应n
。至于它是O(log n)
还是O(n^(1/3))
,我会留给你弄清楚,因为这是为了作业。