如何计算给定算法的时间复杂度

时间:2013-09-11 14:08:46

标签: algorithm time-complexity

i,j,N,sum是全部类型。 N是输入。

(Code1)

i = N;

while(i > 1)
{
    i = i / 2;
    for (j = 0; j < 1000000; j++)
    {
       sum = sum + j;
    }
}

(Code2)

sum = 0;
d = 1;
d = d << (N-1);
for (i = 0; i < d; i++)
{
    for (j = 0; j < 1000000; j++)
    {
        sum = sum + i;
    }
}

如何计算Code1,Code2的步数和时间复杂度?

1 个答案:

答案 0 :(得分:1)

计算时间复杂度,尝试了解需要花费多少时间,以及您计算的n

如果我们说加法(“+”)需要O(1)步,那么我们可以用N来检查它的完成时间。

第一个代码在每个步骤中将i除以2,这意味着它正在执行log(N)步骤。所以时间的复杂性是

 O(log(N) * 1000000)= O(log(N))

第二个代码在n-1的幂中从0到2形成,因此复杂性为:

 O(s^(N-1) * 1000000)=  O(2^(N-1))

但这只是一个理论,因为d的最大值为2 ^ 32/2 ^ 64或其他数字,所以在实践中它可能不是O(2 ^(N-1))

相关问题