我知道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,])发布于 2013-04-02 07:57:51
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中,但在循环for i in range(index,len(list)):的每次迭代中都会将iSmall重置为index。因此iSmall不会正确设置,它总是设置为index,除非在内部循环的最后一次迭代中将其更改为其他值。
https://stackoverflow.com/questions/15753828
复制相似问题