我给出了循环伪代码:
" to"相当于"< ="
sum = 0;
for i = 1 to n
for j = 1 to i^3
for k = 1 to j
sum++
我知道最外面的循环运行n
次。
这两个内部循环是否也运行n times
? (制作整个复杂性O(n^3)
。
例如n = 5 然后:
1 <= 5 2<= 5
j = 1 <= 1^3 2 <= 2^3 = 8
k=1 <= 1 2 <= 2
对于每个循环,这将持续n次,使其成为n^3
?
答案 0 :(得分:1)
这似乎是一个棘手的问题,那些内部循环比n
更复杂。
外部循环是n
。
下一个循环到 i^3
。在外循环结束时,我将等于n
。这意味着最后的这个循环将在n^3
。从技术上讲,它将是(n^3)/2
,但我们忽略了,因为这是大O.
第三个循环转到j
,但在上一个循环结束时j
将等于i^3
。我们已经确定i^3
等于n^3
。
所以看起来像:
n
n^3
n^3
它看起来像n^7
。我希望别人能够验证这一点。一定要喜欢Big O.
答案 1 :(得分:0)
您可以使用Sigma表示法显式展开循环中的基本操作数(让sum++
成为基本操作):
其中
因此,使用Big-O表示法的复杂性为O(n^7)
。