python编程实现归并排序,给出完整的代码并设计实例进行测试
时间: 2024-11-04 20:09:58 浏览: 4
归并排序是一种分治算法,它将数组分成两半,分别对这两半进行排序,然后将它们合并在一起。以下是使用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
# 将数据合并到arr中
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
# 测试代码
test_array = [38, 27, 43, 3, 9, 82, 10]
sorted_array = merge_sort(test_array)
print("Sorted array is:", sorted_array)
```
在这个例子中,我们定义了一个`merge_sort`函数,它接受一个数组作为输入,然后使用归并排序算法对其进行排序。在测试代码中,我们创建了一个未排序的数组`test_array`,然后调用`merge_sort`函数对其进行排序,并将排序后的数组打印出来。
运行这段代码,输出应该是:
```
Sorted array is: [3, 9, 10, 27, 38, 43, 82]
```
这表明我们的归并排序实现是正确的。
阅读全文