python写归并排序
思路:递归循环进行归并排序
def merge_rank(array):
if len(array) > 2:
#数组的左半部分
mergetop = merge_rank(array[0:len(array)//2])
#数组的右半部分
mergelow = merge_rank(array[len(array)//2:])
#当数组长度为2或1时无需进入递归直接排序返回给上一层即可
if len(array) == 2:
return sorted(array)
if len(array) == 1:
return array
newarray = []
#对数组的左右部分进行循环比较 从而得出排序好的数组
while True:
if not mergelow and mergetop:
newarray += mergetop
break
if not mergetop and mergelow:
newarray += mergelow
break
if mergetop[0] < mergelow[0]:
newarray.append(mergetop.pop(0))
else:
newarray.append(mergelow.pop(0))
#返回排序好的数组给上一层循环,newarray就是上一层循环的mergetop 或mergelow
return newarray