好吧,我正在尝试找出这个循环中的大o运行时。我有答案,但我想和社区核实一下。
m =1; 1
for (i = 1; i <= n; i++) n+1
for (j = 1; j <= n*n; j++) n(n+1) = n^2+n
for (k = 1; k <= n*n*n; k++) n(n^2+n) = n^3+n^2
M++; 1*n*n*n
我对复杂性的回答是o(n^3)
m++指令应用了多少条?
我的回答是n^3n^2n,但我不确定
当过程结束时,m的值是多少?
我的回答是1nn*n
是这样吗?
1条答案
按热度按时间4szc88ey1#
你的问题在某种程度上被简化了,因为这三个循环彼此之间没有函数依赖性(除了它们嵌套在一起),所以我们可以将每个循环的复杂度多重叠加在一起,得到最终的答案。
这个
k
循环是O(n^3)
,因为循环的上限是n*n*n
. 通过类似的推理,中间的循环是O(n^2)
外环是O(n)
. 相乘我们得到O(n^6)
.我认为这个问题的“陷阱”会让人误以为,因为最复杂的循环是
O(n^3)
因此,这个术语支配着这个表达,这个表达也必须是整体的O(n^3)
. 希望你现在看到的不是这种情况。