使用分治法的设计策略设计归并排序程序,并通过8 3 2 9 7 1 5 4这一数组验证是否能正确排序
时间: 2024-11-12 11:36:10 浏览: 8
分治法是一种常见的算法设计策略,它将复杂的问题分解成较小的、相似的子问题,然后递归地解决这些子问题,最后合并结果。归并排序就是这种策略的一个典型应用,它对序列进行分治,分为两半,分别排序,然后再合并。
以下是使用Python语言实现归并排序的基本步骤:
1. **划分** (Divide): 将输入数组一分为二,直到每个子数组只有一个元素为止。
2. **合并** (Combine): 对两个有序子数组进行合并,创建一个新的已排序数组。
3. **递归** (Recursion): 对分割后的子数组继续执行以上步骤,直到原始数组合并完成。
下面是针对给定数组`[8, 3, 2, 9, 7, 1, 5, 4]`的归并排序示例代码:
```python
def merge_sort(arr):
if len(arr) <= 1:
return arr
# 分解
mid = len(arr) // 2
left_half = arr[:mid]
right_half = arr[mid:]
# 递归排序左右半部分
left_half = merge_sort(left_half)
right_half = merge_sort(right_half)
# 合并
return merge(left_half, right_half)
def merge(left, right):
result = []
i = j = 0
while i < len(left) and j < len(right):
if left[i] <= right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
# 将剩余未添加的部分加入结果
result.extend(left[i:])
result.extend(right[j:])
return result
# 验证排序
arr = [8, 3, 2, 9, 7, 1, 5, 4]
sorted_arr = merge_sort(arr)
print("Sorted array:", sorted_arr)
阅读全文