亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這段代碼是 O(n) 還是 O(n²)?(Python 代碼)

這段代碼是 O(n) 還是 O(n²)?(Python 代碼)

SMILET 2021-12-29 10:52:08
我們的教授給了我們這個代碼作為大 O 符號 O(n) 的一個例子。但我想知道為什么。在我看來,這段代碼是 O(n2)。我希望你能幫助我。def g(n):     x = n     y = 1     while x > 0:          x = x - 1          y = y + n     while y > 0:          y = y - 1     return True當我在循環中有一個循環時,我認為代碼在 O(n2) 中。這段代碼顯示了兩個單獨的循環,所以它應該是 O(2n),但我可以忽略常量,我得到了 O(n)。如果我錯了,請糾正我。謝謝你的幫助!
查看完整描述

3 回答

?
手掌心

TA貢獻1942條經驗 獲得超3個贊

第一個循環是 O(N)。它運行的次數與 n 的大小成正比。

第二個循環運行的次數與 y 的大小成正比。由于 y 在循環開始時等于 n**2,所以它是 O(N^2)。

由于該函數包含一個 O(N) 循環和一個 O(N^2) 循環,因此該函數總共為 O(N^2)。


查看完整回答
反對 回復 2021-12-29
?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

def g(n):

     x = n           # x = n

     y = 1

     while x > 0:    

          x = x - 1  # loop through x times (since x=n, n times) 

          y = y + n  # in the end, y = (1 + n) + ((1+n) + n) + (((1+n) + n) + n) ... = n + n*n

     while y > 0:    # loops n + n^2 number of times

          y = y - 1

     return True

如您所見,這是因為 y 的值最終為 n + n^2,所以 O(n^2) 是時間復雜度。


查看完整回答
反對 回復 2021-12-29
?
森林海

TA貢獻2011條經驗 獲得超2個贊

你的代碼的復雜度是O(n^2)因為y在第一個循環中總是以 n * n 結束,這將 n 添加到yn 次,所以第二個循環將迭代 n * n 次。


查看完整回答
反對 回復 2021-12-29
  • 3 回答
  • 0 關注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號