For Loop with Multiplication Implementer Complexity

时间:2011-04-05 05:51:04

标签: java runtime complexity-theory

for(int i=1; i<n; i=2*i)
// simple addition performed here...

我理解O(n)运行时单循环和O(n ^ 2)嵌套循环但是这个循环的运行时也是n log n,因为乘法?

谢谢,

2 个答案:

答案 0 :(得分:6)

不,你是正确的,这里有乘法,但它可以减少增加的运行时间,而不是增加

您必须根据输入值n查看循环的完成速度。对于n = 128,您将获得i = 1, 2, 4, 8, 16, 32, 64, 128。如果你加倍n,那么它不会像O(n)那样加倍,并且它肯定不会像O(n 2 )那样乘以4。它只是在循环中添加了一个迭代。

这就是所谓的O(log N)时间复杂度。运行时间随着输入值的对数而上升,并且常见于平衡二叉树搜索,您可以在每次迭代时删除剩余搜索空间的一半。

答案 1 :(得分:1)

如@paxdiablo所述,这是一个O(log n)

的循环

O(n log n)将是

for(int i=0;i<n;i++) 
   for(int j=i;j>0;j/=2)

何时是O(n)和O(log n)的嵌套循环