You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于归并排序的订单排序程序输出错误,请求技术排查

问题排查与修复

错误原因分析

  • 排序结果未被接收:你的归并排序函数sort是返回新的排序后列表,而非原地修改传入的列表。但主程序中仅调用sort(order_list),没有将返回值重新赋值给order_list,导致后续遍历的还是原始的未排序列表,所以输出是原始的ID顺序1 2 3。
  • 输出格式不符合要求:当前代码最后会输出一个多余的空格,而非预期的换行结尾。

修复后的代码

#!/usr/bin/env python3
import sys


class Order:
    def __init__(self, id: int, selection_time: int, shipping_time: int):
        self.id: int = id
        self.selection_time: int = selection_time
        self.shipping_time: int = shipping_time


def merge(left, right):
    if not len(left) or not len(right):
        return left or right
    result = []
    i, j = 0, 0
    while len(result) < len(left) + len(right):
        # 提取总时间,让比较逻辑更清晰
        left_total = left[i].selection_time + left[i].shipping_time
        right_total = right[j].selection_time + right[j].shipping_time
        if left_total < right_total:
            result.append(left[i])
            i += 1
        else:
            result.append(right[j])
            j += 1
        if i == len(left) or j == len(right):
            result.extend(left[i:] or right[j:])
            break
    return result


def sort(order_list):
    if len(order_list) < 2:
        return order_list
    middle = int(len(order_list) / 2)
    left = sort(order_list[:middle])
    right = sort(order_list[middle:])
    return merge(left, right)


if __name__ == '__main__':
    data = input().strip()
    data = data.split('; ')
    order_list = []
    for d in data:
        id_str, selection_t_str, shipping_t_str = d.split(', ', 2)
        order = Order(int(id_str), int(selection_t_str), int(shipping_t_str))
        order_list.append(order)
    # 接收排序后的列表
    sorted_orders = sort(order_list)
    # 直接拼接成符合要求的输出格式
    sys.stdout.write(' '.join(str(order.id) for order in sorted_orders) + '\n')

关键修复点说明

  1. 接收排序结果:将sort(order_list)的返回值赋值给sorted_orders,后续遍历这个已排序的列表,确保输出的是排序后的结果。
  2. 优化输出逻辑:使用' '.join()直接生成空格分隔的ID字符串,避免末尾出现多余空格,最后添加换行符完全匹配预期输出格式。
  3. 可读性优化:将拣选+配送的总时间计算单独提取为变量,让比较逻辑更直观,便于维护。

内容的提问来源于stack exchange,提问作者user12417778

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:40:29