Python实现归并排序
时间: 2024-12-19 08:18:37 浏览: 8
Python实现归并排序是一种常见的分治算法,它将数组分成两半,对每一半递归地排序,然后合并两个已排序的部分。以下是使用Python编写的一个简单版本:
```python
def merge_sort(arr):
# 分治策略的基础情况,如果数组长度为1或0,就直接返回
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):
merged = []
left_index, right_index = 0, 0
# 比较并添加较小的元素到结果数组
while left_index < len(left) and right_index < len(right):
if left[left_index] < right[right_index]:
merged.append(left[left_index])
left_index += 1
else:
merged.append(right[right_index])
right_index += 1
# 如果有剩余的元素,将它们添加到结果数组
merged.extend(left[left_index:])
merged.extend(right[right_index:])
return merged
# 测试归并排序
arr = [9, 7, 5, 11, 12, 2, 14, 3]
sorted_arr = merge_sort(arr)
print("Sorted array:", sorted_arr)
阅读全文