时间复杂度:O(logN)还是O(N)?

时间:2017-05-04 03:52:29

标签: time-complexity big-o analysis

我认为以下代码的时间复杂度为O(log N),但答案是var_dump($_POST); 。我想知道为什么:

O(N)

对于inner for-loop,它运行了很多次: int count = 0; for (int i = N; i > 0; i /= 2) { for (int j = 0; j < i; j++) { count += 1; } }

对我来说似乎是N + N/2 + N/4 ...。请帮我理解为什么在这里。感谢

2 个答案:

答案 0 :(得分:6)

1,1 / 2,1 / 4,1 / 8 ... 1/2 ** n是几何序列,a = 1,r = 1/2(a是第一项,r是共同比例)。

其总和可以使用以下公式计算:

enter image description here

在这种情况下,总和的限制是2,所以:

public final PublicKey generatePublic(KeySpec keySpec)
        throws InvalidKeySpecException {
    if (serviceIterator == null) {
        return spi.engineGeneratePublic(keySpec);
    }
    // Truncated for brevity
}

因此,共谋是O(N)

答案 1 :(得分:0)

逐步进行,基于代码片段,我们得到:

enter image description here

相关问题