描述大theta的正确方法是什么?

时间:2017-03-23 14:46:05

标签: algorithm

关于这些代码:

代码1:

arr[1] = 1;
for(int i=1; i<=n; i++)
  if(arr[i]==1)
    break;

码2:

for(int i=1; i<=n; i++)
  if(arr[i]==1)
    break;

CODE3:

for(int i=1; i<=n; i++)
  for(int j=1; j<=i; j++)
    //O(1) statement

code1具有1的大θ,因为在第一次迭代(恒定时间)内始终满足搜索。

代码2在最好的情况下具有1的大θ,并且在最坏的情况下具有n的大θ,没有说&#34;最坏的情况&#34;句子会说&#34; code2有一个大的θ&#34;对吗?或描述具有多个与之相关的场景的代码的大数据(最好的情况,最坏的情况等等)是否无效,我们必须根据具体情况描述其大的θ?

code3具有n ^ 2的大theta,并且其内部循环具有i的大θ,其范围从1到n,正确地说内部循环具有n的大θ,即使它实际上是从1到n?

1 个答案:

答案 0 :(得分:0)

1)正确

2)谈论最佳案例往往并不值得。使用许多算法你可以很幸运,但如果这种情况很少发生,则无关紧要。谈论平均情况和最坏情况更有用。这两个都是Theta(n)。 (必须对数组中的数字做出一些假设。还要比较案例1))

3)O(1)语句将执行大约n * n / 2次,因此Theta(n * n)是正确的。内循环平均运行n / 2次。