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)
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
,但是您iSmall
将index
在循环的每次迭代时重置为for i in range(index,len(list)):
.因此iSmall
无法正确设置,它始终设置为index
,除非在内循环的最后一次迭代将其更改为其他内容.