매번 루프마다 가장 작은 최솟값을 선택해서 맨 앞부터 하나씩 채우는 알고리즘
시간 복잡도 : 최선, 평균, 최악의 경우 시간 복잡도는O(n^2)으로 동일
공간 복잡도 : 주어진 배열 안에서 교환(swap)을 통해, 정렬이 수행되므로 O(n)이다.
def selectionsort(arr):
n = len(arr)
for i in range(n-1):
min_index = i
for j in range(i+1,n):
if arr[j] < arr[min_index]:
min_index = j
arr[i], arr[min_index] = arr[min_index], arr[i]
return arr
확실히 교환작업에서 시간을 단축해서 bubble sort보단 빠른 것 같다.
그래도 여전히 비효율적이다 n^2
불안정 정렬(Unstable Sort) 이다.
'Computer Science > Algorithm' 카테고리의 다른 글
#05 병합 정렬(Merge Sort) (0) | 2022.01.06 |
---|---|
#04 퀵 정렬(Quick Sort) (0) | 2022.01.06 |
#03 삽입 정렬(Insertion Sort) (0) | 2022.01.05 |
#01 거품정렬 (bubble sort) (0) | 2022.01.05 |
제곱수, 2의 n 제곱인지 확인 (0) | 2021.12.29 |
댓글