본문으로 바로가기

선택 정렬(Selection Sort)

category 기초지식/알고리즘 2019. 5. 6. 19:02

선택 정렬

  • for loop 가 2개(부모 for loop, 자식 for loop)

  • 첫번째 인덱스에 가장 작은 값을 찾아 할당

    • a[1] 에 가장 작은 값을 찾기 위해 자식 for loop 를 전체 순회
    • a[2] 에 두번재 작은 값을 찾기 위해 두번째 인덱스(부모 for loop 순회 2번째(a[1]) 코드 순회 시작...

코드 구현


def selection_sort(a):
    for i in range(0, len(a)-1):
        min_idx = i # 아래의 자식 for loop 를 돌고 가장 작은 값이 minimum 에 저장
        for j in range(i, len(a)): # 부모 for loop 의 포인터가 하나씩 옮겨갈 때마다 자식 for loop 는 부지런하게 끝까지 순회
            if a[min_idx] > a[j]: # 자식 for loop 를 돌면서 가장 작은 값을 찾기
                min_idx = j # 찾았으면 실제 값을 minimum 에 할당
        a[min_idx], a[i] = a[i], a[min_idx] # 자식 for loop 를 다 돌고 가장 작은 값을 minimum 에 할당(저장)
        print(f' ->> 정렬 과정: {a}')

코드 실행


a = [54, 88, 77, 26, 93, 17, 49, 10, 77, 11]
print('정렬 전:\t', end='')
print(a)
print()
selection_sort(a)
print()
print('정렬 후:\t', end='')
print(a)