以下代码的运行时间是多少?

时间:2015-02-25 03:43:17

标签: algorithm code-analysis

代码如下:

Ans = 1;
while( N > 0)
{
     Ans = Ans*2;
     N = N/2;
 }

我无法弄清楚N = N / 2将如何影响运行时。我试图通过检查循环运行的次数来找到一个模式,如果N = 1 ..但我没有注意到任何模式。我想我必须以错误的方式解决这个问题。

2 个答案:

答案 0 :(得分:1)

如果你在谈论渐近符号,那么Big-Oh,复杂性将是O(logn)。计算操作,你会发现它们实际上是基数2的对数。

渐近符号基本上告诉您算法不会比给定的复杂函数运行。大多数计算都可以从代码中立即看出,但是在更复杂的算法中,需要计算指令。

答案 1 :(得分:0)

代码的递归等式:

T(n)=T(n/2)+O(1)
Time complexity is O(logn)