我写了一个插入排序的代码,现在效果很好(是的,这是家庭作业)。但是,在那段代码之前,我写了一个不起作用的另一个,我只是不知道为什么。请帮助我理解......
这是我的旧代码:
def insertion_sort(lst):
if len(lst)==1:
lst=lst
else:
for i in lst[1:]:
if i==min(lst[0:lst.index(i)]):
lst.remove(i)
lst.insert(0, i)
return lst
我不需要新的插入排序,我已经写了一个。我只需要解释为什么这个特定的代码不起作用。
答案 0 :(得分:1)
问题在于,有时即使i
不是lst[0:lst.index(i)]
中的最小值,它仍然需要向下移动。因此,例如,如果lst[0:lst.index(i)]
为[0, 1, 2, 4, 3]
,那么即使最小值为0
,您仍然需要将3
向下移动以便插入排序才能正常工作。< / p>