선택정렬, 셀렉션소트 (Selection Sort)
1. 주어진 배열에서 최솟값을 찾아 맨 앞에 위치한 값과 SWAP한다.
2. 다음 수행시에 처음 위치의 값을 제외한 나머지 값들을 1번을 수행한다.
장점: 자료 이동 횟수가 미리 결정된다.
단점: 값이 같은 레코드가 있는 경우 상대적인 위치가 변경될 수 있다.
- 비교회수:
- 외부 루프: (n-1)번
- 내부 루프: n-1, n-2, ..., 2, 1번
- 교환회수:
- 외부 루프의 실행 회수와 동일
- SWAP을 위한 3번의 이동이 필요
영상으로 보기 - Folk Dance
Python Code
def selection_sort(arr):
arr_len = range(len(arr))
for i in arr_len:
min_idx = i
arr_sub_len = range(i, len(arr))
for j in arr_sub_len:
if arr[min_idx] > arr[j]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr
if __name__ == '__main__':
test = [3, 4, 1, 2, 1, 2, 3, 5, 6, 7 ,4, 23423, 123, 334, 22]
print(test)
selection_sort(test)
print(test)
'알고리즘' 카테고리의 다른 글
[알고리즘] 프로그래머스 - 해시 - 완주하지 못한 선수 (0) | 2019.12.04 |
---|---|
[알고리즘] 삽입정렬, 인서션 소트 (Insertion Sort) (0) | 2019.08.08 |
[알고리즘] 거품정렬, 버블 소트(Bubble sort) (0) | 2019.08.06 |
[알고리즘] Extra Long Factorials (0) | 2019.07.24 |
[알고리즘] Sherlock and Squares (0) | 2019.07.18 |
댓글