歸併排序-Python
- 2022 年 7 月 3 日
- 筆記
歸併排序的時間複雜度O(nlogn),空間複雜度為O(n)
首先我們先假設有兩個有序數組,我們去進行一次歸併
用程式碼實現
def merge(li: list, start: int, mid: int, end: int) : res=[] j = mid +1 while start <= mid and j <= end: if li[start] < li[j]: res.append(li[start]) start +=1 else: res.append(li[j]) j +=1 #運行到這一步,說明左右兩邊一定有一遍已經下標已經超了,即一定有一遍數字已經沒了 #然後判斷如果是左邊還有數字就把左邊剩下的數字全部插入列表中,無需在做判斷 #判斷如果是右邊還有數字就把左邊剩下的數字全部插入列表中,無需在做判斷 while start <= mid: res.append(li[start]) start +=1 while j <= end: res.append(li[j]) j +=1 return res
最後交給遞歸