如何为这个嵌套循环计算大O表示法?

时间:2018-03-05 20:00:38

标签: big-o

如果我有这个简单的代码

for (i =1;i<=n;i++)
for (j=1 ;j<=i;j++)
   count++;

这一行

for (i =1;i<=n;i++) 

如果我说是时间的话,那我就是&#39;得到一个值是T然后我将增加n + 1次,因为条件是i&lt; = n所以增加i的时间是(n + 1)* T条件将被要求n + 1次所以让我们说检查条件所需的时间是T,然后它完成的总时间是(n + 1)* T并且i ++将被执行n次,因为当询问条件是否i(在这种情况下我是n + 1) &lt; = n它将是假的,所以它不会增加i所以执行这个单循环的总时间将是(n + 1)* T +(n + 1) T + n T或(n + 1 + n + 1 + n)* T =(3n + 2) T这个案例的大O将是n 但我不知道如何计算第二个循环,我在想是否是n [(3n + 2)* T]和大O这个是n ^ 2但我不太确定你是否不明白我在说什么,或者我是否犯了第一个循环的错误,如果你可以请详细解释如何为该代码计算它。

1 个答案:

答案 0 :(得分:1)

对于来自外部循环的每个n,第一个循环将执行i次,第二次循环i次。在开始时,i=1,因此内部循环将只有一次迭代,然后i=2, i=3..直到i达到值n。因此,迭代总数为1 + 2 + 3 + ... + n = n * (n + 1) / 2,得出O(n^2)