首页 > 解决方案 > 尝试在 Python 中实现选择排序,结果不正确

问题描述

在阅读有关算法的书时,我正在尝试自己在 Python 中实现选择排序。下面的代码导致一些项目被正确替换,但是,其中一些没有改变。

list = [23, 65, -9, 19, 90, 0, -1]


def sel_sort(A):
    for i in range(len(A)):
        sm_item = A[i]
        for j in range(1+i, len(A)):
            if A[j] < sm_item:
                A[i], A[j] = sm_item, A[i]
    return A

print(sel_sort(list))

结果是:[23、65、65、65、90、90、90]

想不通为什么会出现这个结果?

标签: pythonalgorithmsortingselection-sort

解决方案


像这样更改您的代码

list = [23, 65, -9, 19, 90, 0, -1]


def sel_sort(A):
 for i in range(len(A)):
    sm_item = A[i]
    for j in range(1+i, len(A)):
        if A[j] < sm_item:
            sm_item=A[j]
            A[i], A[j] = A[j], A[i]
 return A

print(sel_sort(list))

推荐阅读