分治算法:归并排序

42 阅读1分钟

问题描述:
将无序数组排序,利用分治思想将数组分成两半,递归排序后合并。

实验思路:

1. 分解:将数组分成左右两半。

2. 解决:递归排序左右子数组。

3. 合并:合并两个有序子数组。 4. def merge_sort(arr):
if len(arr) <= 1: return arr
mid = len(arr)//2
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
return merge(left, right) # 合并函数实现有序归并 应用场景:

  • 分治:排序(归并/快速排序)、大数乘法。