2017-02-04 5 views
-1

私はpythonを使用して選択ソートを学習しようとしていますが、私のコードを動作させることはできません。助けていただければ幸いです。適切なPython SelectionSort

def selection(seq): 
    for x in range(len(seq)): 
    temp = 0 
     for y in range(1, len(seq)): 
      if seq[y] < seq[temp]: 
      temp = y 
    if temp != 0:  
     seq[x], seq[temp] = seq[temp], seq[x] 
    return seq 

選択([12、38、2、18、15、1、19])

+0

このコードの問題点は何ですか? – Arman

+0

これは間違っています。 – Johnathan

+0

どのように正しくないですか? –

答えて

2

あなた混合インデックスループおよび温度の初期化の両方のために。このコードで修正できます:

def selection(seq): 
    for x in range(len(seq)): 
     temp = x 
     for y in range(x+1, len(seq)): 
      if seq[y] < seq[temp]: 
       temp = y 
     seq[x], seq[temp] = seq[temp], seq[x] 
    return seq 

seq = [5, 3, 1, 2, 4] 
print(selection(seq))