2016-10-10 14 views
-1

これは簡単な質問のように思えるかもしれませんが、Pythonで選択ソートを実装しようとすると、ソートされたリストが得られません。私の実装に何か問題はありますか?Pythonで選択ソートを実装していますか?

def selectionSort (B, annotate=True): 
    for i in range(len(A)): 
    for j in range(1,len(A)): 
     if(A[i] > A [j]): 
      A[i], A[j] = A[j], A[i] 



A = [5, 4, 3, 2, 1] 
A_sorted = selectionSort (A) 
print ("Sorted " + str(A) + " = " + str(A_sorted)) 

A = [10, 7, 8, 40, 2, 5] 
A_sorted = selectionSort (A) 
print ("Sorted " + str(A) + " = " + str(A_sorted)) 

は、ここで私は何を得るのです。

>>> (executing lines 1 to 74 of "selection_sort_103_v2.py") 

Sorted [1, 5, 4, 3, 2] = None 

Sorted [2, 40, 10, 8, 7, 5] = None 
+1

あなたの関数からは何も返されません。あなたはパラメータBを使わないのですが、すべての作業はグローバル 'A'で行われます –

+0

インデントを修正してください –

+0

これはそうですか? - https://www.youtube.com/watch?v=Ns4TPTC8whw – wwii

答えて

0

がこれを試みることができます。 jの索引も1から固定されています。これはiに従って変化する必要があります。

値のチェック
def selectionSort (A, annotate=True): 
    for i in range(len(A)): 
     for j in range(i+1,len(A)): 
      if(A[i] > A [j]): 
       A[i], A[j] = A[j], A[i] 

    return A  

A = [5, 4, 3, 2, 1] 
print selectionSort(A) 
>>[1, 2, 3, 4, 5] 

また、あなたは古いものと新しいアレイの両方を印刷したい場合は、それを参照することにより、古い配列を保存したい場合があります。

A = [5, 4, 3, 2, 1] 
Arr=A[:] 
A_sorted=selectionSort(A) 
print ("Sorted " + str(Arr) + " = " + str(A_sorted)) 
関連する問題