归并排序-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
最后交给递归