算法的时间复杂度(嵌套循环)

时间:2016-01-15 01:08:21

标签: c algorithm big-o time-complexity complexity-theory

我试图找出这种伪代码给定算法的时间复杂度:

sum = 0;
for (i = 1; i <= n; i++)
    for (j = 1; j <= n / 6; j++)
        sum = sum + 1;

我知道第一行是

n次

但我不确定第二行。

3 个答案:

答案 0 :(得分:4)

使用Sigma表示法,我们可以找到算法的渐近界限,如下所示:

enter image description here

答案 1 :(得分:3)

这里有一个简单的双循环:

for i=1;i<=n;i++
   for j=1; j<=n/6; j++

所以如果你计算循环体的执行次数(即这行代码sum = sum + 1;将被执行多少次),你会看到它:

  

n * n / 6 =n²/ 6

就big-O符号而言:

  

O(N²)

因为我们并不真正关心常数术语,因为当n增长时,常数术语如果存在与否则不会产生(大)差异!

你完全意识到我在说什么时,你可以更深入地探讨这个好问题:Big O, how do you calculate/approximate it?

但请注意,此类问题更适合Theoretical Computer Science,而不是SO。

答案 2 :(得分:1)

你进行n * n / 6次操作,因此时间复杂度为O(n ^ 2/6)= O(n ^ 2)。