2013-11-28 30 views
1
import sys 
import pdb 

a = [5, 2, 4, 1] 

for i in range(len(a)): 
    for j in range(len(a) - 1): 
     if a[j] > a[j+1]: 
      t = a[j] 
      a[j] = a[j+1] 
      a[j] = t 

print a     
sys.exit() 

我剛剛在Python中嘗試了一個C程序 - 沒有sorted函數的普通排序。爲什麼我沒有得到排序的列表?在沒有排序函數的情況下在python中排序列表

+0

爲什麼「沒有'sorted()'函數」? – Johnsyweb

+0

@Johnsyweb我猜這是一個任務。教師通常不要求內建,以便學生如何做到這一點,而不是他們。 – rdodev

+0

@rdodev:是的,如你所說。在有問題的會議和採訪中,他們期望它沒有內置的功能。 – rajpython

回答

4
t = a[j] 

其次

a[j] = t 

看起來不正確。如果你的意思來交換他們的第二個應該是:

a[j + 1] = t 

但是在Python中,這是更好的寫法如下:

a[j], a[j + 1] = a[j + 1], a[j] 

(當然,在Python,這是更好寫成快速排序)

+0

儘管這可能是一項家庭作業,但這是一項專業工作。希望OP能夠欣賞並從中學習。 – rdodev

+0

是!謝謝你! – rajpython

+0

我是python編程的新手。你能解釋爲什麼在這裏使用兩個for循環嗎? 。我知道這是一個愚蠢的問題。但我無法得到這個概念。 –

1

試試這個 - :

for i in range(len(a)): 
    for j in range(len(a) - 1): 
     if a[j] > a[j+1]: 
      a[j+1], a[j] = a[j], a[j+1] 

print a 

:)

+1

@minitech已經在下面回答了同樣的問題,只是說。 – rdodev

+0

我是python編程的新手。你能解釋爲什麼你在這裏使用兩個for循環? –

1

for循環中的最後一行應該是a[j+1] = t。我認爲這只是一個代碼錯誤。下次照顧。另外,在Python中,當你想交換兩個變量時,你應該遵循@minitech和@Nilesh G的說法。

相關問題