大O表示法的时间复杂度

问题描述 投票:1回答:1

我需要找到某个函数的时间复杂度,而且我不确定自己是否正确。

让我们看看:

f(int i){
    Int x = 1;
    While(x > i){
        System.out.println(x);
        x=x*2;
    }

    While(x > 2){
        x = (int) Math.pow(x,1/2);
        System.out.println(x);
    }
}

现在,我认为第一个while循环告诉我们x = log(i);

第二个循环由x决定,她在每次迭代中都取x的值:

x ^ 1/2 + x ^ 1/4 +•••+ x ^ 1 /(2 ^ k)。

假设第二个循环在x <= 2时停止,因此她运行:

((Log(i))^ 1 /(2 ^ k),在对数规则后,我们发现它是O(loglog(n))

data-structures big-o
1个回答
1
投票

假设第一个循环是while(x < 1)

  • 第一个循环是log(n)
  • 第二个循环是log(log(n))

第一个循环是主要的,因此我想说函数f()具有log(n)复杂度。

© www.soinside.com 2019 - 2024. All rights reserved.