2016-10-10 3 views
-1

이것은 간단한 질문처럼 보일지 모르지만 파이썬에서 선택 정렬을 구현하려고하면 정렬 된 목록을 얻지 못합니다. 구현에 문제가 있습니까?파이썬에서 선택 정렬을 구현합니까?

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)) 
관련 문제