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

modified_selection_sort函数输出异常求助:需按外层循环迭代输出列表

问题分析与修正

你的代码存在两个核心问题:

  1. 打印时机错误:你把print(A)放在了内层j循环里,导致每次内层迭代都打印列表,而题目要求外层循环每完成一次迭代后打印一次,总共输出N-1次。
  2. 排序逻辑不符合要求:题目要求每次将当前未排序部分的最大元素交换到末尾,而你的代码同时寻找最小和最大元素并交换,这会导致排序过程混乱,不符合题目指定的排序步骤。

修正后的代码

def modified_selection_sort(A: list):
    n = len(A)
    # 外层循环:从末尾往前确定最大元素的位置,共执行n-1次迭代
    for i in range(n-1, 0, -1):
        max_idx = 0
        # 内层循环:在0到i的未排序范围内找最大元素的索引
        for j in range(1, i+1):
            if A[j] > A[max_idx]:
                max_idx = j
        # 将最大元素交换到当前未排序部分的末尾(索引i的位置)
        A[max_idx], A[i] = A[i], A[max_idx]
        # 外层迭代完成后打印当前列表
        print(A)

numbers = [int(number) for number in input().split()]
modified_selection_sort(numbers)

代码说明

  • 外层循环range(n-1, 0, -1):从最后一个索引开始逐步往前处理,每次处理完后,索引i的位置就固定了当前未排序部分的最大元素,刚好执行n-1次,对应输出n-1次列表。
  • 内层循环:在0到i的未排序区间内,遍历找到最大元素的索引。
  • 交换操作:把找到的最大元素和当前未排序部分的末尾元素交换,完成一次排序步骤。
  • 打印操作:放在外层循环末尾,每次交换完成后打印列表,完全符合题目要求的输出格式。

测试输入30 40 20 10,输出结果为:

[30, 10, 20, 40]
[20, 10, 30, 40]
[10, 20, 30, 40]

与预期输出完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:51:36