【发布时间】:2020-05-12 14:17:22
【问题描述】:
我有以下代码,我知道它的大 O 复杂度为 n*(log2(n))^2,但我不明白为什么前两个循环的复杂度均为 log2(n)。有人可以解释一下为什么会这样吗?谢谢。
for (int i = n; i>0; i/=2) {
for (int j = 1; j < n; j*=2) {
for (int k = 0; k < n; k+=2) {
... // constant time number of operation
}
}
}
【问题讨论】:
-
您似乎在这里遗漏了一个循环 -
i上是否有您打算在此处包含的外部循环? -
是的,我对此很陌生,我可能在不知情的情况下删除了一行代码。我想现在已经修好了。谢谢!
标签: performance loops big-o complexity-theory