归并排序python写
时间: 2023-11-29 21:46:25 浏览: 79
以下是归并排序的Python实现:
```python
def merge_sort(arr):
if len(arr) > 1:
mid = len(arr) // 2
left_half = arr[:mid]
right_half = arr[mid:]
merge_sort(left_half)
merge_sort(right_half)
i = j = k = 0
while i < len(left_half) and j < len(right_half):
if left_half[i] < right_half[j]:
arr[k] = left_half[i]
i += 1
else:
arr[k] = right_half[j]
j += 1
k += 1
while i < len(left_half):
arr[k] = left_half[i]
i += 1
k += 1
while j < len(right_half):
arr[k] = right_half[j]
j += 1
k += 1
return arr
```
以上代码中,我们首先检查列表的长度是否大于1,如果是,则将列表分成两半,然后递归地对每个子列表进行归并排序。在合并两个子列表时,我们使用三个指针i、j和k,分别指向左半部分、右半部分和合并后的列表。我们比较左右两个子列表的第一个元素,将较小的元素放入合并后的列表中,并将相应的指针向右移动。最后,我们将剩余的元素添加到合并后的列表中。
阅读全文