python实现合并排序
时间: 2024-10-20 16:14:50 浏览: 10
Python实现快速排序.rar
在Python中,归并排序是一种稳定的排序算法,它采用分治策略,将数组不断划分为较小的部分,然后逐步合并成有序整体。以下是使用递归方式实现归并排序的基本步骤:
1. **划分**(Divide):将待排序的序列一分为二,直到每个子序列只有一个元素。
2. **合并**(Merge):对两个已排序的子序列进行合并操作。比较两个子序列的第一个元素,将较小的元素放入新的结果序列,并移动对应的指针。当一个子序列遍历完时,将另一个子序列剩余部分直接添加到结果序列。
3. **递归终止**:如果序列只剩下一个元素或者为空,那么这个序列已经是有序的,递归结束。
这是一个简单的归并排序函数示例:
```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):
merged = []
i = j = 0
# 比较并合并
while i < len(left) and j < len(right):
if left[i] < right[j]:
merged.append(left[i])
i += 1
else:
merged.append(right[j])
j += 1
# 将剩余未加入的元素添加到结果
merged.extend(left[i:])
merged.extend(right[j:])
return merged
# 示例
arr = [4, 2, 9, 6, 23, 12]
sorted_arr = merge_sort(arr)
print("Sorted array:", sorted_arr)
阅读全文