[英]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 < g
則O(f)
包含在O(g)
中。 當我們說 function 是O(f)
時,我們只是說它在 class O(f)
內部。
考慮到在這種情況下,輸入不是使用最大值確定的,這將是最壞的情況。
如果輸入在所有循環之外,它也會更准確,因為輸入在大多數情況下都不是一個恆定的操作。 (雖然這很簡單,只需從文件或其他東西輸入 y ,然后用它來制作數組。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.