归并排序的python代码
时间: 2023-10-17 18:17:17 浏览: 63
Sure! 下面是归并排序的Python代码:
``` python
def merge_sort(lst):
if len(lst) <= 1:
return lst
mid = len(lst) // 2
left = merge_sort(lst[:mid])
right = merge_sort(lst[mid:])
return merge(left, right)
def merge(left, right):
i, j = 0, 0
result = []
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
```
希望这对你有所帮助!还有什么我能为你效劳的吗?
相关问题
归并排序python代码
以下是归并排序的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
```
在这个代码中,我们首先检查列表是否有多于一个元素。如果是这样,我们将其分成两半,并递归地调用归并排序函数来分别对两个半部分进行排序。然后,我们使用一个 while 循环来比较和合并两个已经排好序的半部分。最后,我们返回已经排序的列表。
写一个需要自行输入数组的归并排序Python代码实现。
归并排序是一种分治算法,其思想是将数组分成两半,对每半进行排序,然后将排序好的两半合并在一起。以下是自行输入数组后实现归并排序的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
# 输入数组
array = list(map(int, input("请输入数组元素,用空格隔开: ").split()))
# 调用归并排序函数
merge_sort(array)
# 输出排序后的数组
print("排序后的数组是:", array)
```
在运行这段代码时,程序会提示用户输入一个数组,然后对该数组执行归并排序并输出排序后的结果。
阅读全文