data-structures - Big O 表示法的时间复杂度
问题描述
我需要找到某个函数的时间复杂度,而且我不确定我是否正确。
让我们来看看:
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))
解决方案
假设第一个循环是while(x < 1)
.
- 第一个循环是
log(n)
. - 第二个循环是
log(log(n))
。
第一个循环占主导地位,所以我会说函数f()
具有log(n)
复杂性。
推荐阅读
- python - 显示另一列,其中条件在其他列中确定
- reactjs - 将 JS 2 不同的路由器反应到相同的路径
- typescript - tsconfig.json中设置src时是否需要排除node_modules?
- javascript - 如何更改 RMWC 组件的属性?
- node.js - Socket.io-client 未连接到 socket.io 服务器反应和节点(快递)
- java - ConcurrentLinkedQueue 的替代方案,我是否需要使用带锁的 LinkedList?
- amazon-web-services - 以下哪些不是基于全球的 AWS 服务?
- javascript - 使用 JQuery 单击另一个按钮时删除类
- python - 'for' luss 的 Python Selenium 问题
- rust - 进程的命令恐慌无法访问已被使用的文件