我应该确定这个算法的时间复杂度:
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 ),但这不是正确的答案。我的错误在哪里?
答案 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.