任何人都可以帮我计算和解释这个算法的时间复杂度:
function mystery(n)
r := 0
for i := 1 to n − 1 do
for j := i + 1 to n do
for k := 1 to j do
r := r + 1
return(r)
非常感谢你
答案 0 :(得分:1)
我不知道如何在StackOverflow上制作sigma字符,但它将是:
Sigma(i=1; n-1)Sigma(j=i+1; n)Sigma(k=1;j)1=Sigma(i=1; n-1)Sigma(j=i+1;n)j
您可以通过以下方式简化内部Sigma:
Sigma(j=i+1; n)j = Sigma(j=1;n)j - Sigma(j=1;i)j = n(n-1)/2 - i(i-1)/2=n^2-i^2+n-i
然后你有:
Sigma(i=1; n-1)n^2-i^2+n-i
它将是O(n^3)
,但我的答案更多是作为提示而非解决方案