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

Python 3.6选择排序迭代记录实现:返回含初始列表及迭代过程的新列表

修复选择排序的状态日志功能

我来帮你搞定这个选择排序的日志记录问题!你的代码目前返回空列表,主要有两个核心问题:没有记录初始数组状态,也没有在每轮迭代后保存当前数组的状态,而且直接引用原数组会导致日志里的内容被后续修改覆盖。

下面是修改后的完整代码:

def selectionSort(A):
    log = []
    # 先记录初始数组的副本(必须用copy,避免后续修改影响日志)
    log.append(A.copy())
    for i in range(0, len(A) - 1):
        minIndex = i
        for j in range(i+1, len(A)):
            if A[j] < A[minIndex]:
                minIndex = j
        if minIndex != i:
            A[i], A[minIndex] = A[minIndex], A[i]
        # 每轮外层循环结束后,记录当前数组的状态副本
        log.append(A.copy())
    return log

num_list = [10, 9, 8, 7]
print(selectionSort(num_list))

关键改动说明:

  • 记录初始状态:一开始就把数组的副本加入日志,这是你期望的结果列表的第一个元素。
  • 使用数组副本:必须用A.copy()或者list(A)来创建数组的副本,而不是直接append原数组。因为列表是引用类型,直接append原数组的话,后续对A的修改会同步影响日志里的所有元素,最后日志里全是最终排序后的数组。
  • 每轮迭代后记录状态:在外层循环的每次迭代结束后(不管有没有发生交换),都记录当前数组的状态,这样就能完整保存排序过程中每一步的完整迭代状态。

测试结果

运行上面的代码,输出结果为:

[[10, 9, 8, 7], [7, 9, 8, 10], [7, 8, 9, 10], [7, 8, 9, 10]]

完全符合你期望的格式:包含初始列表,以及每一轮迭代后的完整数组状态,直到最终排序完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:50:18