计算时间复杂度

时间:2016-04-04 15:02:08

标签: time-complexity

我在计算内循环中的时间复杂度方面受到了嘲弄。

让我们考虑以下情况。

案例1:

for(int i = 0; i <= n; i++) - O(n)
{
    for(int j = 0; j <= i; j++)  - O(?);
    {
          //Some thing goes here
    }
}

这里内部循环每次都执行到值i

所以,我可以说,内循环的复杂性是O(i)

,整体复杂度为O(N) * O(I); ie: O(N*I)

有人可以用一些简短的方式解释,这样我就能理解计算。

感谢。

2 个答案:

答案 0 :(得分:2)

总体时间复杂度为 O n ²)(事实上,它甚至是Θ( n ²))。

内部循环具有复杂性 O i )。但是, n i 有关,所以简单地说整个事情都有复杂性 O ni )错误。内环的主体将运行0 + 1 + 2 +⋯+ n =( n ²+ n )/ 2 =Θ( n ²)次。

答案 1 :(得分:1)

在我回答你的要求之前,我将解释一个简单的例子 我们根据最内层循环的执行次数来计算时间复杂度
考虑这种情况:

for(i=0;i<n;i++){
    for(j=0;j<n;j++){
    ....
    }
}

这里外循环执行n次,每次迭代内循环执行n次 第一次迭代 - n
第二次迭代 - n
第3次迭代 - n



第n次迭代-n
所以内循环执行n * n次。所以它是O(n ^ 2) 现在我们根据您要求的情况(

)进行细化
for(int i=0;i<=n;i++){
    for(int j=0;j<=i;j++){
      //Some thing goes here
    }
}

这里外循环执行n次。并且在每次迭代中,内循环执行i次 第一次迭代 - 1
第二次迭代 - 2
第3次迭代 - 3



第n次迭代-n
因此,当我们计算它时,它将是 1 + 2 + 3 + ..... + n = n(n + 1)/ 2
这基本上是O(n ^ 2)。 :)