如果我有以下功能:
for(i=0;i<n;i++)
for(j=0;j<i*i;j++)
for(k=0;k<j;k++)
System.out.println(k);
此函数的big O
是否n^5
:
n*((n-1)^2)*((n-1)^2)-1
?
答案 0 :(得分:3)
您的函数是O(1)
,因为它返回第一个k
,循环在第一次迭代时结束。假设它没有立即返回,它就像你想象的那样是n ^ 5.
对于每个i,第二个循环循环i^2
次,第三个循环循环j
次。
因此,对于每个i
,它循环i^4
次。因此,总数为Sum(i^4) (1..n)
,即O(n^5)
。
答案 1 :(得分:0)
正式使用Sigma Notation,您可以通过以下方式推断增长的顺序: