使用Python实现merge sort排序算法,请清晰划分测试程序以及函数定义。
时间: 2024-09-11 20:16:35 浏览: 68
在Python中,Merge Sort是一种经典的分治算法,其基本思想是将数组分为两半,分别进行排序,然后合并两个已排序的部分。以下是使用Python实现Merge Sort的代码:
```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 = []
while left and right:
# 如果左半边元素较小,将其添加到结果
if left[0] < right[0]:
merged_arr.append(left.pop(0))
else:
merged_arr.append(right.pop(0))
# 将剩余未添加的元素添加到结果
merged_arr.extend(left if left else right)
return merged_arr
```
接下来是一个简单的测试程序:
```python
# 测试案例
test_data = [9, 7, 5, 11, 12, 2, 14, 3, 10]
print("Original array:")
print(test_data)
sorted_data = merge_sort(test_data)
print("Sorted array using Merge Sort:")
print(sorted_data)
assert sorted_data == [2, 3, 5, 7, 9, 10, 11, 12, 14], "Test case failed"
```
在这个测试程序中,首先定义了一个待排序的列表,然后应用`merge_sort`函数对其进行排序,并打印出排序后的结果。最后使用断言检查排序是否正确。
阅读全文