将两个已经排序好的数组按照顺序排序
def mergesort(data):
length = len(data)
# 如果数组长度为1,则认为是有序数列
if length <= 1:
return(data)
num = int(length/2)
# 左右侧都是通过归并排序,排序好的数列
left = mergesort(data[:num])
right = mergesort(data[num:])
# 将左右两个有序数列进行归并,之后返回
return(merge(left, right))
def merge(left, right):
"""这个函数是将左右两个有序数列按照顺序排序"""
r, l = 0, 0
res = []
# 按照数字的大小进行排序
while l < len(left) and r < len(right):
if left[l] <= right[r]:
res.append(left[l])
l += 1
else:
res.append(right[r])
r += 1
res += left[l:]
res += right[r:]
return(res)