Python实现的分治法合并排序,输入的数组要从键盘监听
时间: 2024-10-20 07:15:38 浏览: 33
在Python中,我们可以使用分治法(Divide and Conquer)策略来实现归并排序。归并排序是一种稳定的排序算法,它将数组分成两个较小的部分,分别对它们进行排序,然后合并这两个已排序部分。以下是使用递归的方式在Python中实现的一个版本:
```python
def merge_sort(arr):
# 如果数组长度小于等于1,直接返回
if len(arr) <= 1:
return 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, right):
merged_arr = []
left_index = 0
right_index = 0
# 比较左右两边的元素并合并
while left_index < len(left) and right_index < len(right):
if left[left_index] <= right[right_index]:
merged_arr.append(left[left_index])
left_index += 1
else:
merged_arr.append(right[right_index])
right_index += 1
# 将剩余未添加的元素添加到结果数组
merged_arr.extend(left[left_index:])
merged_arr.extend(right[right_index:])
return merged_arr
# 接收用户输入的数组
input_array = list(map(int, input("请输入一串数字,用空格隔开:").split()))
# 对数组进行归并排序
sorted_array = merge_sort(input_array)
print("排序后的数组是:", sorted_array)
阅读全文