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


