如果
首先,
someWork(..)
恰好执行i
次操作,那么这个循环的大O是多少?算法someWork(..)
随着i
的增加而增加工作量。如何用sigma符号表示解决方案?i <--2
while (i < n)
someWork (..)
i <-- power (i,2)
done
首先,
i <-- power (i,2)
的复杂度为 O(log n)
,而someWork(..)
似乎也是 O(log n)
,因为随着 i
的增加它会做更多的工作。将这两个复杂度相乘可得到 O((log n)²)
的复杂度。确认无误?
O(log n)
。 - RahulO(log n)
不可能是对的。someWork(..)
在循环的最后一轮中至少需要O(sqrt(n))
。详见我的答案。 - AbcAeffchen