[英]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.