第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

在我的函數(shù)修復(fù)中,2 個嵌套 while 循環(huán)的時間復(fù)雜度如何為 o(N)?

在我的函數(shù)修復(fù)中,2 個嵌套 while 循環(huán)的時間復(fù)雜度如何為 o(N)?

尚方寶劍之說 2023-04-18 16:29:49
輸入 = [10, 9, 7, 18, 13, 19, 4, 20, 21, 14]輸出:10 9 18 7 20 19 4 13 14 21def fixing(arr):    oddIdx = 1    evenIdx = 0    while True:        while evenIdx < len(arr) and arr[evenIdx] %2 ==0:            evenIdx +=2        while oddIdx < len(arr) and arr[oddIdx] % 2!=0:            oddIdx+=2        if evenIdx < len(arr) and oddIdx < len(arr):            arr[evenIdx], arr[oddIdx] = arr[oddIdx], arr[evenIdx]        else:            break    return arr是因為我們沒有忽略外循環(huán)嗎?如果是,為什么,如果不是,為什么不呢?謝謝你!
查看完整描述

2 回答

?
瀟湘沐

TA貢獻(xiàn)1816條經(jīng)驗 獲得超6個贊

讓我們分解一下。

的條件while True取決于evenIdx < len(arr) and oddIdx < len(arr)。

所以外循環(huán)不會迭代超過 O(N) where N=len(arr)。

但是內(nèi)循環(huán)呢?

讓我們考慮這里的選項:

  1. 我們只有 1 次外部循環(huán)迭代,其中內(nèi)部函數(shù)前進(jìn)evenIdxoddIdx到達(dá)中斷點。所以整體 O(N)。

  2. 外層循環(huán)迭代 K 次。但是evenIdx,oddIdx 不要重置。在第 1 次迭代中,evenIdx/oddIdx到達(dá) 0 到 N 之間的某個位置,第 2 次迭代它們?nèi)匀焕^續(xù)前進(jìn),第 3 次迭代相同,直到第 K 次迭代。最終evenIdx/oddIdx前進(jìn)了 O(N) 次。所以又是O(N)。

可以進(jìn)行更嚴(yán)格的分析,但仍然是 O(N)。


查看完整回答
反對 回復(fù) 2023-04-18
?
精慕HU

TA貢獻(xiàn)1845條經(jīng)驗 獲得超8個贊

這是因為您沒有通過外循環(huán)每次都重置evenIdxoddIdx返回。0每次重復(fù)外循環(huán)時,內(nèi)循環(huán)都會從上一次停止的地方開始。

因此,您不會對列表執(zhí)行多次迭代——只要兩個內(nèi)部循環(huán)都到達(dá)末尾,您就會跳出外部循環(huán)。并且每個內(nèi)部循環(huán)只訪問偶數(shù)或奇數(shù)元素一次。


查看完整回答
反對 回復(fù) 2023-04-18
  • 2 回答
  • 0 關(guān)注
  • 184 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號