i=1; while (i<=n) i=i*2 来问下这个这个循环的算法复杂度是多少哈?教教详细过程喔。。 答案是lg n/llg 2
答案:4 悬赏:50
解决时间 2021-02-20 03:58
- 提问者网友:温柔又任性
- 2021-02-19 10:31
i=1; while (i<=n) i=i*2 来问下这个这个循环的算法复杂度是多少哈?教教详细过程喔。。 答案是lg n/llg 2
最佳答案
- 二级知识专家网友:努力只為明天
- 2021-02-19 11:08
答案没错。 i是这样变化的:1, 2, 4, 8, 16, ... 如果用i(x)表示第x次循环时i的值,则 i(x) = 2^x , x初始值为0。 循环在 i <= n 的时候停止,即 i(x) = 2 ^ x <= n; => x<= log2(n) 即循环结束时,最多进行了log2(n)次运算。 按照大O表示法定义,它的复杂度为 O(log2(n)), 即 O(lgn/lg2)
全部回答
- 1楼网友:湫止没有不同
- 2021-02-19 12:41
这个明明就是O(n)嘛
- 2楼网友:湫止没有不同
- 2021-02-19 12:35
复杂度就是判断i何时大于n嘛,即2^i>n,所以运行次数为:log2(n),可变为 lgn/lg2
- 3楼网友:不傲怎称霸
- 2021-02-19 11:48
你好!
i的取值是1,2,4,8,...直到其值取超过n的2的k次幂,
而这时经哗涪糕皇蕹郝革酮宫捆过了k次循环,时间复杂度就是k。
不难看出k=log2(n)=lgn/lg2
打字不易,采纳哦!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |