利用归并排序算法将读入的 n 个数从小到大排序后输出
时间: 2023-07-05 14:32:32 浏览: 106
好的,我来给你讲解一下利用归并排序算法进行排序的过程:
归并排序是一种典型的分治策略,其基本思路是将待排序序列分成若干个子序列,分别进行排序,最后将已经排好序的子序列合并成为最终的有序序列。具体实现过程如下:
1. 将待排序序列分成若干个子序列,每个子序列包含一个元素,即认为每个子序列都是有序的。
2. 进行两两合并,得到若干个长度为 2 的有序子序列。
3. 对于长度不为 2 的子序列,可以认为其中只有一个元素是有序的,因此可以直接将其合并到前面的有序子序列中。
4. 重复步骤 2 和 3,直到所有子序列合并成为一个有序序列。
下面是具体的代码实现:
```python
def merge_sort(nums):
if len(nums) <= 1:
return nums
mid = len(nums) // 2
left = merge_sort(nums[:mid])
right = merge_sort(nums[mid:])
return merge(left, right)
def merge(left, right):
result = []
i, j = 0, 0
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
```
在这段代码中,`merge_sort` 函数是归并排序的主函数,用于将待排序序列分成若干个子序列,并进行排序;`merge` 函数则是用于对两个有序序列进行合并的函数。
最后,我们可以通过以下代码读入 n 个数并进行排序:
```python
n = int(input())
nums = []
for i in range(n):
nums.append(int(input()))
sorted_nums = merge_sort(nums)
for num in sorted_nums:
print(num)
```
这样,就可以将读入的 n 个数从小到大排序后输出了。
阅读全文