以下代码的运行时间是多少
What is the runtime of the following code
代码如下:
Ans = 1;
while( N > 0)
{
Ans = Ans*2;
N = N/2;
}
我不知道 N = N/2 将如何影响 运行 时间。我试图通过检查如果 N = 1 .. 7 循环 运行 的次数来找到一种模式,但我没有注意到任何模式。我想我一定是走错了路。
如果你在谈论渐近符号,Big-Oh,复杂度将是 O(logn)
。算一下操作,你会发现它们实际上是以二为底的对数。
渐近符号基本上告诉您该算法并不 运行 比给定的复杂度函数慢 。大部分的计算可以直接从代码中看出,但是在更复杂的算法中,需要指令的计算。
您的代码的递归方程:
T(n)=T(n/2)+O(1)
Time complexity is O(logn)
代码如下:
Ans = 1;
while( N > 0)
{
Ans = Ans*2;
N = N/2;
}
我不知道 N = N/2 将如何影响 运行 时间。我试图通过检查如果 N = 1 .. 7 循环 运行 的次数来找到一种模式,但我没有注意到任何模式。我想我一定是走错了路。
如果你在谈论渐近符号,Big-Oh,复杂度将是 O(logn)
。算一下操作,你会发现它们实际上是以二为底的对数。
渐近符号基本上告诉您该算法并不 运行 比给定的复杂度函数慢 。大部分的计算可以直接从代码中看出,但是在更复杂的算法中,需要指令的计算。
您的代码的递归方程:
T(n)=T(n/2)+O(1)
Time complexity is O(logn)