我试图找出这种伪代码给定算法的时间复杂度:
sum = 0;
for (i = 1; i <= n; i++)
for (j = 1; j <= n / 6; j++)
sum = sum + 1;
我知道第一行是
n次
但我不确定第二行。
答案 0 :(得分:4)
答案 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)。