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

Python冒泡排序代码需求:生成与指定输出完全匹配的实现

冒泡排序过程匹配解决方案

问题背景

需要实现升序冒泡排序,要求每一轮排序的所有比较步骤完成后都输出当前数组状态(无论是否发生元素交换)。给定输入样例:

45 22 34 79 23

需生成与题目一致的10行输出样例。原代码仅在元素交换时输出数组,无法满足要求。

正确实现代码

l = list(map(int, input().split()))
n = len(l)

# 外层循环:控制排序轮数,共n-1轮
for i in range(n - 1):
    # 内层循环:每轮比较次数递减,末尾i个元素已排好序无需比较
    for j in range(n - 1 - i):
        # 比较并交换(如果需要)
        if l[j] > l[j + 1]:
            l[j], l[j + 1] = l[j + 1], l[j]
        # 无论是否交换,都输出当前数组状态
        print(*l)

代码解释

原代码的核心缺陷是仅在交换元素时输出数组,而题目要求每一次相邻元素比较完成后,不管有没有交换,都要输出当前数组,这是匹配样例的关键:

  • 外层循环:冒泡排序最多需要n-1轮排序,每轮会把当前未排序区间的最大元素"冒泡"到末尾位置。
  • 内层循环:每轮的比较次数随轮数递增而递减(n-1-i),因为每轮结束后,末尾的i个元素已经处于正确的有序位置,无需再参与比较。
  • 输出逻辑:每次完成相邻元素的比较(及可能的交换)后,立即输出当前数组。这样就能完整记录所有比较步骤的数组状态,生成和样例完全一致的输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:10:00