1. 주어진 데이터 중에서 최솟값을 찾는다
2. 맨 앞의 데이터와 찾은 최솟값의 위치를 바꾼다
3. 위 과정을 다음 나머지 값에서 반복한다
* 시간복잡도 : O(n^2)
import random
# set up
def selection_sort(data):
for x in range(len(data)-1):
lowest = x
for y in range(lowest+1, len(data)):
if data[lowest] > data[y]:
lowest = y
data[lowest], data[x] = data[x], data[lowest]
return data
# given
data = random.sample(range(30), 5)
# when
print(selection_sort(data))
# then
# 1, 7, 12, 15, 23
- 출처 : fastcampus
'알고리즘 이론 > 정렬' 카테고리의 다른 글
합병/병합 정렬(merge sort) (0) | 2020.10.01 |
---|---|
퀵 정렬(quick sort) (0) | 2020.09.29 |
삽입 정렬(insertion sort) (0) | 2020.09.28 |
버블 정렬(bubble sort) (0) | 2020.09.13 |
댓글