确定for循环的时间复杂度

时间:2011-06-11 19:33:50

标签: theory big-theta big-o

我知道这个循环是O(n ^ 2)但是什么是Big-Omega和Big-Theta?你如何在这样的情况下计算它们呢?

for(i = 0; i < array.length; i++) 
   for (j = 0; j < array.length; j++)
      //bla bla

1 个答案:

答案 0 :(得分:0)

首先,请参阅larsmans的评论。循环逻辑不一定足以排除。让我们说为了论证,你确信循环逻辑不会爆发,逻辑是微不足道的(即没有条件路径影响所执行的工作),而你定义的工作单元是一次通过循环执行的总逻辑

在这种情况下,您的上限和下限是相同的。您可以保证至少执行N ^ 2个工作单元的顺序。您有Ω(N^2)O(N^2)。你的下限和上限是相同的;你可以描述Θ(N^2)的特征。

再次提到,如果循环逻辑非常重要并且特别依赖于您实际定义为工作单元的内容,则这是毫无意义的。这些符号的要点是表征算法要产生的预期工作量。您可以循环遍历循环数百万次,但如果您真正关心的工作是在该循环中调用SomeExpensiveFunction()的次数,那么这不会影响这种表示法规定它只被召唤一次。