Selection Sort는 Bubble Sort와 유사한 알고리즘으로, 해당 순서에 원소를 넣을 위치는 정해져 있고, 어떤 원소를 넣을 지 선택하는 알고리즘입니다.
Selection Sort와 Insertion Sort를 헷갈려하는 사람들이 종종 있는데, Selection Sort는 배열에서 해당 자리를 선택하고 그 자리에 오는 값을 찾는 것이라고 생각하면 편합니다.
def selection_sort(arr):
for i in range(len(arr) - 1):
min_idx = i
for j in range(i + 1, len(arr)):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
데이터의 개수가 n개라고 했을 때,
(n-1) + (n-2) + ... + 2 + 1 => n(n-1)/2
비교하는 것이 상수 시간에 이루어진다는 가정 아래, n개의 주어진 배열을 정리하는데 O(n^2)만큼의 시간이 걸립니다. 최선, 평균, 최악의 경우 시간복잡도는 O(n^2)으로 동일합니다.
주어진 배열 안에서 교환(swap)을 통해, 정렬이 수행되므로 O(n) 입니다.