归并排序
def mergeSort(nums, start, end):
if start >= end:
return
mid = (start + end) // 2
mergeSort(nums, start, mid) # 拆分
mergeSort(nums, mid+1, end)
merge(nums, start, mid, end) # 合并
return nums
def merge(nums, start, mid, end):
tmp = []
i = start
j = mid + 1
while i <= mid and j <= end: # mid分开的两表进行对比合并
if nums[i] < nums[j]:
tmp.append(nums[i])
i += 1
else:
tmp.append(nums[j])
j += 1
while i <= mid:
tmp.append(nums[i])
i += 1
while j <= end:
tmp.append(nums[j])
j += 1
for i in range(len(tmp)):
nums[start + i] = tmp[i]