首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >时间复杂度

时间复杂度
EN

Stack Overflow用户
提问于 2011-05-23 07:04:32
回答 3查看 380关注 0票数 5

这个问题是为了复习过去的试卷,我只想知道我是否在正确的轨道上。

代码语言:javascript
复制
1. int i=1;
2. while (i <= n) {
3.   for (int j=1; j<10; j++)
4.     sum++;
5.   i++;
6. }
7. for( int j = 1; j <= n; j++ )
8.   for( int k = 1; k <= n; k=k*2 )
9.      sum++;

(

1.)语句4执行了多少次?

A. O(n)

B. O(n^2)

C. O(原木)

D. O(n对数)

E.上述任何一项

我在这里选择了A

(

2.)语句9执行了多少次?

A. O(n)

B. O(n^2)

C. O(原木)

D. O(n对数)

E.上述任何一项

因为第8行(k=k*2),我选择了C

(

3.)整个代码片段的运行时间是多少?

A. O(n)

B. O(n^2)

C. O(原木)

D. O(n对数)

既然O(n)+O(logn)=O(n),所以我选择了A。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-23 07:09:45

您的答案1是正确的,它在一个循环中,只有n控制。

答案2不正确。如果第7行不存在,则为O(log n),但由于第7行迫使第8和第9行多次依赖于n运行,所以答案是O(n log n)

答案3是正确的推理,但受到事实的影响,答案2是错误的。O(n) + O(n log n)简化为O(n log n)

所以答案是ADD

票数 13
EN

Stack Overflow用户

发布于 2011-05-23 07:18:45

我不知道这些问题是如何表述的,但如果你说的是这样的话,你的考官就不知道“大O”的正确定义(至少当他期待“正确”答案的时候)--因为“大O函数包括更小的”。因此,在f(n) =10n中,以n的函数形式执行的线性函数也在O( n),O(n^2),O(n log N)中。如果有人要求尽可能的“最小”,你的答案将是

  1. 语句4被执行10 n次,所以
  2. 语句9被执行n*log n次,所以D
  3. 在这里执行两者之和,n+ n*log so (这里您丢失了一个*n),所以D将是正确的。

因此,如果多个答案是可能的,并且只要求它执行了多少,那么正确的答案应该是

  1. A,B,D
  2. B,D
  3. B,D
票数 2
EN

Stack Overflow用户

发布于 2011-05-23 08:34:20

答:答。O(n),因为语句4将执行10*n次。

Ans 2: d.O(nlog(n)),因为语句9将被执行n*log(n)次。

Ans 3: d作为总复杂度O(n) + O(nlog(n))为n*log(n)。

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

https://stackoverflow.com/questions/6093914

复制
相关文章

相似问题

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