簡體   English   中英

算法的大O分析

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM