簡體   English   中英

while循環時間復雜度內的兩個條件

[英]two conditions inside while loop time complexity

而(varz > deviceNum || varz == 0);

我有這段代碼,我想測量它的時間復雜度,但我很困惑它是大 O(n) 還是 o(n^2),因為它里面有兩個條件

這取決於 while 循環內部的內容,以及此示例中“N”代表的內容。 假設 N 是“equipmentnumz”並且在 while 內部不存在內部循環,這是一個 O(n) 算法。

相比之下,O(n)^2 將是一個嵌套循環(例如,另一個循環內部的循環)。 例子:

while ($x < 1000): 
    while ($y < 1000): 
        y = y + 1
    x = x + 1

O(n) 表示法本身與算法如何處理不斷增加的數據集的行為有關。 如果列表大小加倍,O(n) 算法的時間正好是兩倍。 如果將列表加倍,上面的示例將花費兩倍的時間(實際上它會花費很多倍的時間)。 因為所需的迭代次數為 n^2,所以這是一個 O(n^2) 算法。

什么是 O(n)?

O(n) 算法隨數據集線性擴展。 以下示例都是 O(n)。

# O(n) algorithm
while (number < 1000): 
    number = number + 1; 

# Example 2. Also O(n) 

while (number < 1000): 
    number = number * 2; 
    number = number / 2; 
    number = number + 1; 

雖然第二個例子有更多的代碼並且需要更長的執行時間,但如果你將 N 的大小加倍,它仍然只需要恰好兩倍的時間。因此,它是 O(n),所需的時間與數據集的大小。

計算 O(n) 的實際過程比這篇文章能夠充分涵蓋的要復雜得多。 這篇文章有一個很好的解釋和更多的信息。 此頁面也可能會有所幫助。它以更簡單的術語解釋了其背后的概念/理論。)

暫無
暫無

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

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