# 数字排序程序:稳定排序与文件输入记录


背景介绍

本项目旨在实现一个稳定排序算法,支持多列输入处理,并记录输入文件大小。通过归并排序实现排序,确保结果的稳定性和高效性。程序可本地运行,无需依赖外部工具,适用于不同规模的数据输入。

实现要点

  1. 多列输入处理:输入格式可能是单行或多行,需逐行读取并转换为数字列表。
  2. 归并排序实现:采用递归归并方法实现稳定排序,确保排序结果的原地修改。
  3. 文件输入记录:通过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()))

总结

本项目通过归并排序实现稳定排序,能够处理单列或多列输入数据。程序首先读取所有输入数字,将其转换为数字列表,然后采用递归归并方法进行稳定排序,最后输出排序结果和输入文件大小。代码实现了文件读取与数据处理的完整功能,适用于不同规模的数据输入场景。