编写能够输出每一趟排序的结果的归并排序的程序
时间: 2023-07-17 13:55:51 浏览: 81
C语言排序法 输出每趟结果.pdf
以下是一个能够输出每一趟排序结果的归并排序的示例程序,你可以尝试运行它:
```python
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
return merge(left, right)
def merge(left, right):
merged = []
i, j = 0, 0
while i < len(left) and j < len(right):
if left[i] <= right[j]:
merged.append(left[i])
i += 1
else:
merged.append(right[j])
j += 1
while i < len(left):
merged.append(left[i])
i += 1
while j < len(right):
merged.append(right[j])
j += 1
return merged
# 测试
arr = [9, 3, 2, 6, 8, 5, 1, 7, 4]
sorted_arr = merge_sort(arr)
for i in sorted_arr:
print(i)
```
这个程序会先定义一个`merge_sort`函数来实现归并排序,然后定义一个`merge`函数来合并两个有序数组。在`merge_sort`函数中,首先判断数组长度是否小于等于1,如果是,则直接返回该数组。如果不是,则将数组分为左右两部分,并对每部分递归调用`merge_sort`函数。最后,将左右两部分的结果通过`merge`函数合并,并返回最终的排序结果。
通过这个程序,你将能够看到每一趟排序的结果。希望能够帮到你!
阅读全文