给定代码的时间复杂度?

时间:2015-10-14 17:53:14

标签: time-complexity

此代码的时间复杂度是什么:

for (i=1 to n)
   for (j=1 to i^2)
        if ((j mod i)==0)
               for (k=1 to j)
                   write ("*");

我发现i,j和k之间存在这种关系: 例如n = 4所以:

i      j             k
1      1-1           1  k  run for 1time
2      1-4           1,2,3,4  k run for 2 and 4 times
3      1-9           1,2,3,4,5,6,7,8,9 k run for 3, 6 and 9 times
4      1-16          1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 k run for 4, 8, 12 and 16 times

但我无法找到它的复杂性

1 个答案:

答案 0 :(得分:0)

与大的n值相比,

j mod i = 0的出现可以忽略不计。对于前两个嵌套循环,显然复杂性是pow(i,2)从1到n的总和。所以我们可以将复杂度视为O(n ^ 3)。