박남수 2021. 3. 5. 17:35

선택정렬

선택 정렬이란 가장 작은(혹은 큰) 원소를 선택하여 그 값을 맨앞에 위치한 값과 바꿔주는 정렬이다.

 

시간복잡도:O(n2)

 

 

def select_sort(li):
    for i in range(0,len(li),1): # 0 부터 배열의 길이 -1 만큼 반복
        min = i #i 를 min 에 저장(최소값의 인덱스)
        for j in range(i,len(li),1):#i 부터 배열의길이 -1 만큼 반복
            if li[min] > li[j]: #인덱스 min 자리보다 j의 자리가 더 클 경우
                min = j # min 을 j 로 변경
        temp = li[i]    #비교 후 i 인덱스 의 값을
        li[i] = li[min] # min 인덱스 의 값과 변경
        li[min] = temp
        print(li)
    return li
select_list = select_sort([1,5,10,2,3,100,50,30,23])
print("최종결과")
print(select_list)

 

실행결과

[1, 5, 10, 2, 3, 100, 50, 30, 23]
[1, 2, 10, 5, 3, 100, 50, 30, 23]
[1, 2, 3, 5, 10, 100, 50, 30, 23]
[1, 2, 3, 5, 10, 100, 50, 30, 23]
[1, 2, 3, 5, 10, 100, 50, 30, 23]
[1, 2, 3, 5, 10, 23, 50, 30, 100]
[1, 2, 3, 5, 10, 23, 30, 50, 100]
[1, 2, 3, 5, 10, 23, 30, 50, 100]
[1, 2, 3, 5, 10, 23, 30, 50, 100]

최종결과
[1, 2, 3, 5, 10, 23, 30, 50, 100]