给出Big-O估计值

时间:2017-03-01 18:12:05

标签: algorithm time big-o

我应该确定这个算法的时间复杂度:

x:=1                       // (1) 
for i:=1 to n do           // (3n+1)
    for j:=1 to i do       // (3n)
        x:=max(x, i*j)     // 3*(3n+1)*(3n)
return x

我得到了O( n 2 ),但这不是正确的答案。我的错误在哪里?

2 个答案:

答案 0 :(得分:0)

时间复杂度为O(n*(n+1)) ~ O(n*2)。因为第二次循环直到我每次都会运行(1,2,3,4 ......)次。

答案 1 :(得分:0)

是的,你是对的,复杂性将是O(n ^ 2)。由于执行X := max(X,i*j) n(1 + n)/ 2次,我们可以得到n ^ 2/2 <=复杂度&lt; = n ^ 2.