使用【python】写【二路归并】的代码
时间: 2024-10-18 13:10:19 浏览: 26
二路归并排序是一种高效的排序算法,它的基本思想是将数组分为两半,分别对每一半进行排序,然后合并两个已排序的部分。这里是一个使用 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_sorted = merge_sort(left_half)
right_sorted = merge_sort(right_half)
# 合并两个有序部分
return merge(left_sorted, right_sorted)
def merge(left, right):
merged = []
left_index = 0
right_index = 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 = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = merge_sort(arr)
print("Sorted array:", sorted_arr)
```
这段代码首先定义了 `merge_sort` 函数,它接受一个数组,然后将其拆分成两部分,分别调用自身对它们进行排序。然后,`merge` 函数负责合并两个已经排好序的子数组。
当你运行这个代码时,它会对给定的数组进行排序并输出结果。如果你有任何关于代码的问题或者想了解二路归并排序的原理,请告诉我。
阅读全文