写一段python归并排序
时间: 2023-07-17 17:02:18 浏览: 89
Python 实现的归并排序代码
当然可以!以下是一个使用Python实现归并排序算法的示例代码:
```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 = []
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
while left_index < len(left):
merged.append(left[left_index])
left_index += 1
while right_index < len(right):
merged.append(right[right_index])
right_index += 1
return merged
# 测试示例
arr = [5, 2, 8, 12, 3, 7, 1, 9]
sorted_arr = merge_sort(arr)
print(sorted_arr)
```
这段代码定义了两个函数:`merge_sort` 和 `merge`。`merge_sort` 函数使用递归将数组分割成较小的部分,直到只剩下一个元素。然后,它使用 `merge` 函数合并这些部分并按照升序进行排序。
`merge` 函数接受两个有序的子数组,并将它们按照升序合并为一个新的有序数组。
在示例中,我们使用 `[5, 2, 8, 12, 3, 7, 1, 9]` 这个数组进行测试,并打印出排序后的结果。
阅读全文