def merge(arr):
# 这个函数是先把数组进行分割,一直分,最后分成一个数来调用第二个函数MergeSort进行比较
# 如果数组只有一个数,直接就返回
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left_arr = merge(arr[:mid])
right_arr = merge(arr[mid:])
return merge_sort(left_arr, right_arr)
def merge_sort(left_arr, right_arr):
left = 0
right = 0
mergelist = []
while left < len(left_arr) and right < len(right_arr):
if left_arr[left] < right_arr[right]:
mergelist.append(left_arr[left])
left += 1
else:
mergelist.append(right_arr[right])
right += 1
# 到这里,上面的两个序列的比较就比较完了,下面的操作是把剩下的没有比较的,直接放入存储的归并列表中
mergelist += left_arr[left:]
mergelist += right_arr[right:]
return mergelist
arr = [8, 5, 3, 2, 8]
ans = merge(arr)
print(ans)
基础算法——归并排序
最新推荐文章于 2023-09-25 11:40:17 发布