栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

嵌套嵌套循环反复使计数器加倍的这段代码的复杂性是什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

嵌套嵌套循环反复使计数器加倍的这段代码的复杂性是什么?

您需要一点数学才能看到。内部循环迭代

Θ(1 + log [N/(i+1)])
时间(
1 +
因为for是必需的
i >= N/2
[N/(i+1)]= 1
对数为0,但是循环迭代一次)。
j
所采用的值
(i+1)*2^k
,直到它至少一样大
N
,并且

(i+1)*2^k >= N <=> 2^k >= N/(i+1) <=> k >= log_2 (N/(i+1))

使用数学除法。因此,将更新

j *= 2
称为
ceiling(log_2 (N/(i+1)))
时间,并将条件称为检查
1 + ceiling(log_2(N/(i+1)))
时间。这样我们就可以写出全部工作

N-1  N ∑ (1 + log (N/(i+1)) = N + N*log N - ∑ log ji=0 j=1= N + N*log N - log N!

现在,斯特林的公式告诉我们

log N! = N*log N - N + O(log N)

因此我们发现完成的总工作确实是

O(N)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/379986.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号