簡體   English   中英

為什么內部循環執行(n / 2)次而不是(n)次

[英]Why is the inner loop executing (n/2) times instead of (n) times

for (int i = 0; i < array.length; i++)   {
 for (int j = i + 1; j < array.length; j++) {
        if (array[i] == array[j]) return true;
    }
}

編輯:忘記添加外循環。 我被初始化為零。

為什么此代碼執行(n / 2)次而不是(n)次?

該循環平均執行n / 2次:

  • 在第一次迭代中,它最多執行n-1次,因為j從1開始
  • 在第二次迭代中,它最多執行n-2次,因為j從2開始
  • 在第三次迭代中,它最多執行n-3次,因為j從3開始
  • ...
  • 在最后一次迭代中,它執行零次,因為i + 1等於數組的長度。

如果將第一行添加到最后一行,第二行從后面添加到第二行,第三行從后面添加到第三行,依此類推,每對將產生n-1; 對於偶數個n值,將有n / 2這樣的對,因此循環在n上執行的平均次數為n / 2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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