【问题标题】:Time complexity of this while loop?这个while循环的时间复杂度?
【发布时间】:2012-08-01 06:43:39
【问题描述】:

这个循环的时间复杂度是多少?

j=2
while(j <= n)
{
    //body of the loop is Θ(1)
    j=j^2
}

【问题讨论】:

    标签: while-loop time-complexity


    【解决方案1】:

    你有

    j = 2
    

    和每个循环: j = j^2

    模式是:

    2     = 2^(2^0)
    2*2   = 2^(2^1)
    4*4   = 2^(2^2)
    16*16 = 2^(2^3)
    

    可以看作:

    2^(2^k) with k being the number of iteration
    

    因此循环在以下情况下停止:

    2^(2^k) >= n
    log2(2^(2^k)) >= log2(n)
    2^k >= log2(n)
    log2(2^k) >= log2(n)
    k >= log2(log2(n))
    

    复杂度是log2(log2(n))

    【讨论】:

    • 你能解释一下为什么会是 Log2(n) 吗?
    • 是的,对不起,我在用手机,打算在电脑前解释更多。最重要的是答案是错误的......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 2023-02-09
    相关资源
    最近更新 更多