我试图弄清楚这个循环语句的Big-O运行时间。有人可以帮助我吗?
for (i = 1; i < n*n; i=i*2)
是O(n^2 lg n)
吗?
答案 0 :(得分:2)
不,它应该是O(logn)
。因为log(n^2) = O(logn)
。
答案 1 :(得分:2)
其O(登录):
log(n^2) = 2log(n) = O(logn)
答案 2 :(得分:1)
建议的答案是正确的;
“是O(logn)
,因为你的迭代增量是多项式(1,4,8,16等......),而不是线性的。
你可以这样看 - 迭代次数不是线性的,而是多项式,它与迭代量成对比。虽然迭代次数是二次的,但在循环执行期间它是constat,因此可以忽略2
中的量词2*O(logn)
。