簡體   English   中英

一個簡單的python程序的時間復雜度

[英]time complexity of a simple python program

def foo(n):
    for i in range(n):
        for k in range(1,i):
            if k>n/k:
                return k

這個程序的時間復雜度是多少? 答案說它的 O(n)。 歡迎對此做出任何解釋

編輯:錯字

答案說它的 O(n)。

是的,復雜度是O(N)因為

for k in range(i,i)

for循環永遠不會執行。

所以,你的代碼相當於

def foo(n):
    for i in range(n):
       pass

更新

def foo(n):
    for i in range(n):
        for k in range(1,i):
            if k>n/k:
                return k

k>n/k等價於k^2 > n並且它是k > sqrt(n)

循環主要執行sqrt(n)次,內循環執行0 次,然后是1 次,然后是2 次,....., sqrt(n) 次才從函數返回。

所以,總復雜度是O(sqrt(n) * sqrt(n))O(n)

暫無
暫無

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

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