选择排序Python没有内置的ins

use*_*227 0 python sorting algorithm selection

我知道python有一堆内置函数,但我尝试编码选择排序最小化内置函数因为我试图理解算法.我的输出对我的选择排序不正确.任何帮助赞赏!提前致谢.

def selection_sort(list):
    for index in range(0, len(list)):
        for i in range(index,len(list)):
            iSmall = index

            if list[iSmall] > list[i]:
                iSmall = i
        list[index], list[iSmall] = list[iSmall], list[index]
    return list  

if __name__ == '__main__':
    print selection_sort([5,2,4,6,1,3,])
Run Code Online (Sandbox Code Playgroud)

ang*_*rge 5

iSmall = index不合适.我没有提到所有评论者提到的任何内容,这都是正确的(截至本编辑).那么,你的代码iSmall = index在正确的地方:

def selection_sort(list):
    for index in range(0, len(list)):
        iSmall = index
        for i in range(index,len(list)):
            if list[iSmall] > list[i]:
                iSmall = i
        list[index], list[iSmall] = list[iSmall], list[index]
    return list  

if __name__ == '__main__':
    print selection_sort([5,2,4,6,1,3,])
Run Code Online (Sandbox Code Playgroud)

换句话说,您正在寻找最小数字的索引(并尝试将其存储在其中iSMall,但是您iSmallindex在循环的每次迭代时重置为for i in range(index,len(list)):.因此iSmall无法正确设置,它始终设置为index,除非在内循环的最后一次迭代将其更改为其他内容.