본문 바로가기
정보처리산업기사

정보처리산업기사 필기 :: 선택 정렬(Selection Sort)

by YBin's 2024. 7. 23.

마무리 공부중에 놓쳤던 부분이 있어서 끄적여 본다.

 

사건의 발단은 정렬 및 검색 파트는 이미 알고 있다는 생각으로 잘 들여다보지 않은 것이다.

 

일단, 우리가 흔히 알고 있는 방법은 다음과 같다.

"오름차순의 경우, 가장 작은 값을 찾아 맨 앞부터 채워 바꾸어 나가기"

 

예제를 통해 간단히 살펴 보자면,

 

[ 8, 5, 6, 2, 4] # 초기값

### 1회전 진행 0번 인덱스 변경 ###
1. 내 커서가 위치한 0번 인덱스인 8값을 제외하고 가장 작은 값 선택 ( 2를 선택 )
2. 가장 작은 값을 현재 인덱스와 변경

# 1회전 결과 => [ 2, 5, 6, 8, 4 ]

.
.
.

 

이러한 방식이 우리가 흔히 알고 있는 선택정렬 일 것이다.

 

그런데, 교재 (시나공 2024 정보처리산업기사 필기 기본서 ) 에는 좀 다른 방식으로 서술되어 있다.

 

아래의 방법을 유심히 지켜보자.

[ 8, 5, 6, 2, 4] # 초기값

### 1회전 진행, 0번 인덱스 변경 ###
1. 내 커서가 위치한 0번 인덱스인 8값을 제외하고, 다음 인덱스부터 비교
2. 1번 인덱스인 5 값이 8보다 작으므로 교환 => [ 5, 8, 6, 2, 4 ]
3. 2번 인덱스인 6은 바로 윗 과정에 의해 교체된 5보다 크므로 패스
4. 3번 인덱스인 2 값이 5보다 작으므로 교환 => [ 2, 8, 6, 5, 4 ]
5. 마지막 인덱스인 4는 윗 과정에 의해 교체된 2보다 크므로 패스

# 1회전 결과 => [ 2, 8, 6, 5, 4 ]

.
.
.

 

이와 같이 최솟값을 찾아 교체하는 방식이 아닌, 나의 다음 인덱스부터 하나하나 비교해가며 작은 값을 골라서 가져온다...

 

시나공 문의를 보니 이러한 방식이 정보처리산업기사 및 정보처리기사 문제에 해당하는 풀이 방식이라고 한다..

 

나처럼 시험 직전에 머리가 띠용해지는 사람이 없어지기를 바라며 적어 놓는다..