运行时间到Theta表示法

时间:2018-09-06 16:26:19

标签: runtime big-o

查看代码后:

for(i=n-1; i>=0; i-=2)
   for(j=15; j<100; j+=3)
      sum +=i+j

我要说的是,用Theta符号表示的运行时间为Θ(n ^ 2),因为有两个循环和const(i和j)。这是正确的吗?

1 个答案:

答案 0 :(得分:0)

我将插入另一个插头,以适应

的那个旧渐近准则。
  

“如有疑问,请由内而外!”

让我们再来看一下该代码:

for(i=n-1; i>=0; i-=2)
   for(j=15; j<100; j+=3)
      sum +=i+j;

让我们从最里面的语句开始,该语句添加到变量sum中。该语句的运行时与此处的任何其他变量无关,因此Θ(1)起作用。因此,让我们这样重写代码:

for(i=n-1; i>=0; i-=2)
   for(j=15; j<100; j+=3)
      do Theta(1) work

现在,让我们来看一下内部的for循环。请注意,无论其他变量的值如何,此循环始终运行完全相同的次数(大约30ish)。这意味着该循环运行固定的次数,并完成固定的工作量,因此该循环的最终效果是完成Θ(1)的工作。显示在这里:

for(i=n-1; i>=0; i-=2)
    do Theta(1) work

所以现在我们离开了这个最后的循环。在这里,我们看到完成的工作直接且线性地取决于n。具体来说,此循环执行Θ(n)次迭代,并且每次迭代都进行Θ(1)工作,因此完成的总工作量为Θ(n)

请注意,不是由for循环的 number 决定运行时,而是这些循环的作用。计算循环数是获取循环的好方法粗略估计运行时,但是我上面说明的从内到外工作的方法更加精确。