big-o运行时

jslywgbw  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(366)

好吧,我正在尝试找出这个循环中的大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
是这样吗?

4szc88ey

4szc88ey1#

你的问题在某种程度上被简化了,因为这三个循环彼此之间没有函数依赖性(除了它们嵌套在一起),所以我们可以将每个循环的复杂度多重叠加在一起,得到最终的答案。
这个 k 循环是 O(n^3) ,因为循环的上限是 n*n*n . 通过类似的推理,中间的循环是 O(n^2) 外环是 O(n) . 相乘我们得到 O(n^6) .
我认为这个问题的“陷阱”会让人误以为,因为最复杂的循环是 O(n^3) 因此,这个术语支配着这个表达,这个表达也必须是整体的 O(n^3) . 希望你现在看到的不是这种情况。

相关问题