我知道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,])
答案 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
,除非在内循环的最后一次迭代中它被改为其他东西。