时间/算法复杂性 - 嵌套,同时按产品模式增加

时间:2016-10-12 13:14:51

标签: time-complexity big-o asymptotic-complexity

我正在尝试测量算法的时间复杂度。 算法有一段时间,从1开始。好的。但问题是i随产品增加。 我没有使用大O,只计算指令。 我试图找到一种模式。

在这个例子中,我做对了:

i = 1; -> // 1 execution
while(i<=n) { // n+1
  j =1; // n
while(j<=n) { // n²
....
  j = j + 1; // n² * 2
}
i = i + 1; // 2n
}

确定。我只需要总结。

但问题出现在这种情况下:

i = 1; // 1 execution
while(i<n) { // n execution?
System.out.println("*"); // n execution?              
i = i * 2; // n execution????
}      

我测试了太多方法:

When n is 2 ---> The println run 1 time.
When  n is  3 ---> The println run 2 times.
When n is 4 ---> The println run 2 times.
When n is 5 ---> The println run 3 times.
When n is 6 ---> The println run 3 times.

模式是什么?

我不想要Big O符号。

1 个答案:

答案 0 :(得分:1)

复杂度为O(log(n))因为我们在每次迭代中将i除以2,所以让我们说,while循环将执行m次,我们有2^m<=n暗示{ {1}}所以m<=log(n)