2011-10-24 25 views
1

我的老師希望我按照升序排列算法,但是使用列表中的最小數字並將其放在開頭。我讀的數字文件,到目前爲止,我有:如何用迭代函數按最小值排序?

def findMin(ls, n): 
     m = 0 
     for i in range(1, n):  #n is length 
       if ls[i]<ls[m]: 
         m = i 
     return m 


    def sortlist(ls,n): 
     if n == 1: 
       return 
     m = findMin(ls,n) 
     ls.insert(0,m) 
     ls.remove(m) 
     sortlist(ls, n) 

我試過幾種技術並不能得到它的工作。我試圖把最小數字放在開頭,然後從列表中減去它,以便函數不會在長度上計算它。我知道如果我最大限度地排序,我會把n-1放到最低點?

回答

1

從你的描述中我推斷出你的老師希望你實施Selection Sort algorithm。你可能想看看它。

在這個算法中,您將最少的數字與當前位置交換。最初,當前位置位於列表的開始位置,並且在您交換值時發生變化。

0

這是冒泡排序:

... 
for i in range(0, n-1): 
    for j in range(i + 1, n): 
     if ls[j] < ls[i]: 
      temp = ls[i] 
      ls[i] = ls[j] 
      ls[j] = temp 
...