归并排序python递归
时间: 2023-11-24 16:53:16 浏览: 83
归并排序是一种高效的排序算法,它的时间复杂度为O(nlogn)。下面是归并排序的Python递归实现:
```python
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = arr[:mid]
right = arr[mid:]
left = merge_sort(left)
right = merge_sort(right)
return merge(left, right)
def merge(left, right):
result = []
i = j = 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
result += left[i:]
result += right[j:]
return result
```
这个实现中,`merge_sort`函数接收一个列表作为参数,如果列表长度小于等于1,则直接返回该列表。否则,将列表拆分成两个子列表,分别对这两个子列表进行递归调用`merge_sort`函数,最后将两个有序的子列表合并成一个有序的列表。
`merge`函数接收两个有序的子列表作为参数,将它们合并成一个有序的列表。具体实现中,使用两个指针`i`和`j`分别指向两个子列表的开头,比较两个指针所指向的元素的大小,将较小的元素添加到结果列表中,并将指针向后移动一位。当其中一个子列表的元素全部添加到结果列表中后,将另一个子列表的剩余元素全部添加到结果列表中。
阅读全文