2012-12-04 144 views
1

我寫了一個插入排序的代碼,現在效果很好(是的,它是作業)。但是,在編寫代碼之前,我寫了一個不起作用的代碼,我只是不知道爲什麼。請幫助我瞭解......python插入排序?

這是我的老代碼:

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 

我並不需要一個新的插入排序,我已經寫了一個。我只需要解釋爲什麼這個特定的代碼不起作用。

+1

什麼是應該做的事'LST = lst'? –

+1

@NiclasNilsson榮耀的「通過」聲明? – kreativitea

+0

是的..我是新來這個,我還是寫代碼在一個非常愚蠢的方式......) – Yarden

回答

1

問題是,有時,即使i不是lst[0:lst.index(i)]中最小的,仍然需要向下移動。因此,舉例來說,如果lst[0:lst.index(i)][0, 1, 2, 4, 3],那麼即使最低爲0,你仍然需要移動3下一個地方,插入排序工作。

+0

我不明白,這是爲什麼? – Yarden