首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >确定Big-o While循环

确定Big-o While循环
EN

Stack Overflow用户
提问于 2014-07-16 04:03:15
回答 4查看 1.6K关注 0票数 1

// n>0

代码语言:javascript
运行
复制
i ← 0 
while (i < n) 
     j ← 0 
     while (j < power(2,i)) 
         j ← j + 1 
     done 
    i ← i + 1 
done

是总体复杂度O(n(log(N),因为内部while循环有一个条件where 2^i so 2^02^1^2...=1 2 816 32 64 128...等等。那么对于2^i log(n) > i?

而外部循环看起来简单地是O(n)。

O(n(log(N)的多重双循环复杂度,请确认?提前谢谢。

EN

回答 4

Stack Overflow用户

发布于 2014-07-16 04:14:54

我是O(2^n)

对于外部循环,迭代次数是n,因此对于从0到n-1的每个i值,内部循环都会执行。

每次内循环的迭代次数为2^i,因此整个程序的迭代次数为:

代码语言:javascript
运行
复制
2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + ... +2^(n-1)

这个和等于2^n - 1。因为2^n与1相比太大了,所以我们可以去掉大O符号中的1,从而得到O(2^n)

票数 5
EN

Stack Overflow用户

发布于 2014-07-16 08:06:02

通过Sigma表示法使用正式的方法:

票数 3
EN

Stack Overflow用户

发布于 2014-07-16 04:14:36

看起来像O(2^n),内部循环是从i=0到i=n-1的和(2^i),这和2^(i)-1次操作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24767155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档