关于这些代码:
代码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?
答案 0 :(得分:0)
1)正确
2)谈论最佳案例往往并不值得。使用许多算法你可以很幸运,但如果这种情况很少发生,则无关紧要。谈论平均情况和最坏情况更有用。这两个都是Theta(n)。 (必须对数组中的数字做出一些假设。还要比较案例1))
3)O(1)语句将执行大约n * n / 2次,因此Theta(n * n)是正确的。内循环平均运行n / 2次。