选择排序Python没有内置的ins

时间:2013-04-01 23:50:04

标签: python algorithm sorting 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,])

1 个答案:

答案 0 :(得分: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,])

换句话说,您正在寻找最小数字的索引(并尝试将其存储在iSMall中,但您在每次迭代时都会将iSmall重置为index循环for i in range(index,len(list)):。所以iSmall没有正确设置,它始终设置为index,除非在内循环的最后一次迭代中它被改为其他东西。