2013-04-01 38 views
0

我知道python有一堆內置函數,但我嘗試編碼選擇排序最小化內置插件,因爲我試圖理解算法。我的輸出對我的選擇排序不正確。任何幫助感謝!提前致謝。選擇排序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,]) 
+0

'range'是一個內置的: ) –

+1

使用內置類型的名稱命名變量是錯誤的形式。 –

+0

@人們低調 - 爲什麼?對我來說這似乎是一個體面的問題,它不是要求代碼,只是調試幫助。 – Michael0x2a

回答

5

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,但你在每次重置iSmallindex循環迭代for i in range(index,len(list)):因此iSmall沒有得到正確設置,它始終設置爲index,除非在內部循環的最後一次迭代中它被更改爲其他內容