如果我有这个简单的代码
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但我不太确定你是否不明白我在说什么,或者我是否犯了第一个循环的错误,如果你可以请详细解释如何为该代码计算它。
答案 0 :(得分:1)
对于来自外部循环的每个n
,第一个循环将执行i
次,第二次循环i
次。在开始时,i=1
,因此内部循环将只有一次迭代,然后i=2, i=3..
直到i
达到值n
。因此,迭代总数为1 + 2 + 3 + ... + n = n * (n + 1) / 2
,得出O(n^2)
。