개념 : 오른쪽 리스트에서 가장 작은 숫자를 선택하여 왼쪽 리스트의 맨 뒤로 이동하는 작업을 반복
예시 :
정렬 된 리스트 | 정렬 전 리스트 | 가장 작은 값 찾는 인덱스 순서 |
[ ] | [ 9, 7, 1, 5, 3 ] | min = 0 -> 1-> 2 |
[ 1 ] | [ 9, 7, 5, 3 ] | min = 0 -> 1 -> 2 -> 3 |
[ 1, 3 ] | [ 9, 7, 5 ] | min = 0 -> 1 -> 2 |
[ 1, 3, 5 ] | [ 9, 7 ] | min = 0 -> 1 |
[ 1, 3, 5, 7 ] | [ 9 ] | min = 0 |
[ 1, 3, 5, 7 ,9 ] | [ ] |
위 방법은 별로임 리스트를 하나 더 사용하기 때문에 메모리가 낭비된다고 보면 된다
그러면 어떻게 해야 하나 -> 그냥 자리 교환만 하면 된다
리스트 | 원하는 자리 인덱스 | 가장 작은 값 찾는 인덱스 순서 |
[ 9, 7, 1, 5, 3 ] | 0 | 2 |
[ 1 ,9, 7, 5, 3 ] | 1 | 4 |
[ 1, 3, 9, 7, 5 ] | 2 | 4 |
[ 1, 3, 5, 9, 7 ] | 3 | 4 |
[ 1, 3, 5, 7, 9 ] | 4 | 4 |
[ 1, 3, 5, 7, 9 ] |
선택정렬 특징 데이터에 민감하지 않음
'학교강의 > 컴퓨터 알고리즘' 카테고리의 다른 글
최소 신장트리 (1) | 2023.11.24 |
---|---|
컴퓨터 알고리즘 12주차 (1) | 2023.11.17 |
[ Search ] (0) | 2023.10.06 |
쉘 정렬 (0) | 2023.09.15 |