0

我知道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,])
4

1 回答 1

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为。因此设置不正确,它始终设置为,除非在内部循环的最后一次迭代将其更改为其他内容。indexfor i in range(index,len(list)):iSmallindex

于 2013-04-01T23:57:50.790 回答