簡體   English   中英

2個嵌套循環的時間復雜度

[英]Time complexity for 2 nested loops

如果我通過 2 個這樣的嵌套 For 循環輸入

cin>>x;

for(i=0;i<x;i++)
{
   cin>>y;

for(j=0;j<y;j++)

}

外循環的復雜度是 O(X) 但我對內循環的時間復雜度感到困惑,因為 Y 是可變的。

外循環的復雜性不是O(x) ,因為運行外循環所需的時間取決於輸入的 y 的值。

假設我們有一個y1,y2,...,yn的輸入序列。 然后第一個循環將進行y1次操作,第二次迭代將進行y2次操作,依此類推,每次迭代x次。

現在讓Y是這個輸入序列的最大值,那么外循環的每次迭代將最多進行Y次操作。 因此,對於x次迭代,每次最多進行Y次操作,我們得到 O(xY)。

可以進一步指定可能更小的 class 函數,但重要的是要記住,如果f < gO(f)包含在O(g)中。 當我們說 function 是O(f)時,我們只是說它在 class O(f)內部。

考慮到在這種情況下,輸入不是使用最大值確定的,這將是最壞的情況。

如果輸入在所有循環之外,它也會更准確,因為輸入在大多數情況下都不是一個恆定的操作。 (雖然這很簡單,只需從文件或其他東西輸入 y ,然后用它來制作數組。)

暫無
暫無

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

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