查看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