背景介绍
本项目旨在实现一个稳定排序算法,支持多列输入处理,并记录输入文件大小。通过归并排序实现排序,确保结果的稳定性和高效性。程序可本地运行,无需依赖外部工具,适用于不同规模的数据输入。
实现要点
- 多列输入处理:输入格式可能是单行或多行,需逐行读取并转换为数字列表。
- 归并排序实现:采用递归归并方法实现稳定排序,确保排序结果的原地修改。
- 文件输入记录:通过sys.stdin读取所有输入,记录输入文件的大小。
代码实现
import sys
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
merged.extend(left[i:])
merged.extend(right[j:])
return merged
# 读取输入并处理
numbers = []
for line in sys.stdin:
line = line.strip()
if line:
numbers.extend([int(x) for x in line.split()])
sorted_numbers = merge_sort(numbers)
print("排序后结果:", sorted_numbers)
print("输入文件大小:", len(sys.stdin.read()))
总结
本项目通过归并排序实现稳定排序,能够处理单列或多列输入数据。程序首先读取所有输入数字,将其转换为数字列表,然后采用递归归并方法进行稳定排序,最后输出排序结果和输入文件大小。代码实现了文件读取与数据处理的完整功能,适用于不同规模的数据输入场景。