好吧,我想弄清楚这个循环中的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)
m ++指令适用多少?
我的答案是n ^ 3 * n ^ 2 * n,但我不确定
流程完成后m的值是多少?
我的答案是1 * n * n * n
这是对的吗?
答案 0 :(得分:4)
你的问题有点简化,因为三个循环之间没有任何功能依赖(除了它们嵌套在一起),所以我们可以将每个循环的复杂性混合在一起以获得最终答案。
k
循环是O(n^3)
,因为循环的上限是n*n*n
。通过类似的推理,中间循环为O(n^2)
,外循环为O(n)
。相乘,我们得到O(n^6)
。
我认为这个问题的“陷阱”会让某些人认为因为复杂性最高的循环是O(n^3)
因此这个术语在表达式中占主导地位,然后这个术语也必须是整体{{1} }。希望您现在可以看到这种情况并非如此。