본문 바로가기

Algorithm/Sorting Algorithm

선택 정렬 (Selection Sort)

728x90
반응형

선택 정렬

: 가장 작은 값을 맨 앞으로 이동한 후, 교환하는 방식으로 진행한다. 버블 정렬에서는 인덱스를 이동하면서 지속적으로 교환을 했다면 선택 정렬에서는 가장 작은 데이터를 찾아 한 번만 교환한다. 기준 인덱스가 계속 바뀐다는 점을 알고 있을 것!

 

"최솟값이 저장된 인덱스를 갱신하는 것"

 

 

출처: https://visualgo.net/en

 

 

 

 

파이썬으로 구현한 선택정렬

from random import randint

def selection_sort(arr):
    for i in range(n-1):
        minIndex = i
        for j in range(i+1, n):
            if arr[minIndex] > arr[j]:
                minIndex = j  # 최저값의 인덱스 저장
        arr[i], arr[minIndex] = arr[minIndex], arr[i]
        # 찾아낸 최솟값의 idx와 현재 idx에 있는 값을 swap한다.
    return arr

arr = [randint(1, 50) for i in range(8)]
n = len(arr)
print(selection_sort(arr))
728x90
반응형

'Algorithm > Sorting Algorithm' 카테고리의 다른 글

합병 정렬 (Merge Sort)  (0) 2021.07.14
힙 정렬 (Heap Sort)  (0) 2021.07.14
삽입 정렬 (Insertion Sort)  (0) 2021.07.14
퀵 정렬 (Quick Sort)  (0) 2021.07.13
버블 정렬 (Bubble Sort)  (0) 2021.07.13