1

我为插入排序编写了一个代码,现在效果很好(是的,这是家庭作业)。但是,在该代码之前,我编写了另一个不起作用的代码,我只是不知道为什么。请帮我理解...

这是我的旧代码:

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

我不需要新的插入排序,我已经写了一个。我只需要解释为什么这个特定代码不起作用。

4

1 回答 1

1

问题是有时,即使i不是最小的lst[0:lst.index(i)],它仍然需要向下移动。因此,例如,如果lst[0:lst.index(i)][0, 1, 2, 4, 3],那么即使最小值是0,您仍然需要3向下移动一个位置才能使插入排序起作用。

于 2012-12-04T17:25:33.460 回答