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

Python实现selection sort输出结果不正确,请问错误出在哪里?

选择排序代码错误排查

核心错误点

你的代码交换逻辑的下标使用错误:

  • 内层循环遍历完成后,已经定位到了未排序区间内最小元素的下标mindex,按照选择排序逻辑,此时需要将最小元素和**当前未排序区间的首元素(下标为element)**交换,完成本轮排序
  • 你代码中错误使用了内层循环的变量compare_index做交换,内层循环结束时compare_index固定等于列表最后一个元素的下标,完全不是需要交换的目标位置,因此排序逻辑混乱。

修正方案

将原代码中交换元素的行:

element_list[compare_index], element_list[mindex] = element_list[mindex], element_list[compare_index]

修改为:

element_list[element], element_list[mindex] = element_list[mindex], element_list[element]

完整可运行修正代码

my_list = [64, 25, 12, 11, 32]

def selection_sort(element_list):
    for element in range(len(element_list)):
        mindex = element
        for compare_index in range(element+1, len(element_list)):
            if element_list[mindex] > element_list[compare_index]:
                mindex = compare_index
        # 修正交换的下标
        element_list[element], element_list[mindex] = element_list[mindex], element_list[element]

    for element in range(len(element_list)):
        print(element_list[element])

selection_sort(my_list)

运行输出

11
12
25
32
64

和你预期的结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:12:03