计算嵌套循环的复杂性

时间:2015-01-26 03:03:24

标签: big-o complexity-theory time-complexity

我知道每个for循环都是O(log 2n),但我不确定它们中的3个会合在一起吗? O(3⋅log₂n)?谢谢你们。

for (int i = n; i > 0; i = i / 2) {
    for (int j = n; j > 0; j = j / 2) {
        for (int k = n; k > 0; k = k / 2) {
            count++;
        }
    }
}

1 个答案:

答案 0 :(得分:3)

正如你所说,每个自我循环都有时间复杂度Θ(log₂n)

由于循环不相互依赖,即变量ijk对彼此没有影响,三个嵌套循环的复杂性可以简单地成倍增加你得到Θ((log₂n)⋅(log₂n)⋅(log₂n)) = Θ((log₂n)³),也写成Θ(log₂³n)。这意味着它也在O(log₂³n)

注意:由于log₂³n不等于3⋅log₂n,您可以简化log₂³nlog₂n³