[英]Big O Analysis for Algorithm
接下來在我的Big O問題系列中,我找不到答案
以下面的例子為例
for(int i = 0; i < someNumber; i++)
{
for(int j = i; j < someNumber; j++)
{
DoSomething();
}
}
這仍然被認為是O(n ^ 2)? 我只是問,因為我認為這必須小於O(n ^ 2),因為內部循環對於i的每次迭代執行越來越少(因為j越來越接近someNumber)。
謝謝
外循環運行n次。 內循環開始運行n次,但隨着外循環的每次迭代而減少,直到它只運行一次的最后一次迭代。 內循環內的代碼將運行
n +(n-1)+ ... + 2 + 1
倍。
這可以簡化為n(n + 1)/ 2( 證明 ),或n 2/2 + n / 2,或最后(n 2 + n)/ 2.由於第一項是n 2 ,算法在O(n 2 )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.