用python 写归并排序,并进行注释
时间: 2023-06-02 15:05:50 浏览: 100
好的,这是一个关于归并排序的 Python 实现代码:
```python
def merge_sort(arr):
if len(arr) <= 1:
return arr
# 将 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_half, right_half):
result = []
left_index = right_index = 0
# 比较左右两个子序列的元素,依次放入 result 中
while left_index < len(left_half) and right_index < len(right_half):
if left_half[left_index] < right_half[right_index]:
result.append(left_half[left_index])
left_index += 1
else:
result.append(right_half[right_index])
right_index += 1
# 如果左右两个子序列有剩余的元素,则将其全部放入 result 中
if left_index < len(left_half):
result.extend(left_half[left_index:])
if right_index < len(right_half):
result.extend(right_half[right_index:])
return result
# 测试代码
arr = [5, 2, 7, 1, 4, 3, 6]
sorted_arr = merge_sort(arr)
print(sorted_arr)
```
归并排序是一种基于分治思想的排序算法,它的主要思想是将一个大问题拆分成多个规模更小、结构相同的子问题,通过递归的方式求解子问题,最终将子问题的解合并为原问题的解。
在这个实现中,我们首先将输入的数组拆分成两个子序列,并递归地对每个子序列进行排序。然后,我们使用一个 `merge` 函数来合并这两个已经排好序的子序列。最终,我们得到的就是一个排好序的完整数组。
注释已经加在代码中,希望可以帮助你理解归并排序的实现过程。
阅读全文
相关推荐
















