循环中的大O运行时

时间:2017-09-04 05:41:11

标签: java big-o

好吧,我想弄清楚这个循环中的Big 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)

  1. m ++指令适用多少?

    我的答案是n ^ 3 * n ^ 2 * n,但我不确定

  2. 流程完成后m的值是多少?

    我的答案是1 * n * n * n

  3. 这是对的吗?

1 个答案:

答案 0 :(得分:4)

你的问题有点简化,因为三个循环之间没有任何功能依赖(除了它们嵌套在一起),所以我们可以将每个循环的复杂性混合在一起以获得最终答案。

k循环是O(n^3),因为循环的上限是n*n*n。通过类似的推理,中间循环为O(n^2),外循环为O(n)。相乘,我们得到O(n^6)

我认为这个问题的“陷阱”会让某些人认为因为复杂性最高的循环是O(n^3)因此这个术语在表达式中占主导地位,然后这个术语也必须是整体{{1} }。希望您现在可以看到这种情况并非如此。