查看http://faculty.simpson.edu/lydia.sinapova/www/cmsc250/LN250_Weiss/L03-BigOh.htm#Counting上嵌套for循环的运行时间的示例和说明,第二个示例对我来说看起来并不正确。for循环的运行时间
例1
sum = 0;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
sum++;
有道理的时候了。外for循环是O(n)。 Inner for Loop也是O(n)。将它们相乘,O(n) * O(n) = O(n*n) = O(n^2).
第二个例子。内部for循环不与0
sum = 0;
for(i = 0; i < n; i++)
for(j = i; j < n; j++)
sum++;
运行内环的时间将是(1 + 2 + … + n) = n*(n+1)/2 = O(n^2)
如在第一例子开始,外环在O(n)的运行。所以总的运行时间是O(n) * O(n^2) = O(n^3).
我是对的,还是我错过了什么? 谢谢!
我想我找出了我错在哪里。事实上,(1 + 2 + ... + n)= n *(n + 1)/ 2 = O(n^2) 首先,内循环取决于外循环,不能简单地乘以复数在前面的例子中做过。我们必须计算每个执行外循环的内循环的执行次数。因此,我们得到n个项目组成的系列。 感谢您的帮助! – newprint