일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 누구를 위한 교육과정인가?
- 나만의 독서법
- code.org
- MontyHall
- Code Blast
- 패트릭 브링리
- 코드 폭발 효과
- 휴먼명조
- 변곡점
- 4차 산업혁명
- 베스트 극장
- 수학적 귀납법
- 알프레드 에이호
- 2021년 튜링상
- 선각자
- 욱
- Visual Studio Code
- 2022 개정 교육과정
- 동영상 플레이어
- 인공지능
- 매트로폴리탄 미술관
- 중학교 교육과정
- 머신러닝
- 제프리 울만
- 앱
- 블록 코딩
- 단편 드라마
- 파일 검색
- 박사 논문
- 안드로이드
- Today
- Total
코딩하는 공무원
8장. 추가 연습 문제 : 선택 정렬 알고리즘 본문
선택 정렬(Selection Sort)은 삽입 정렬, 거품 정렬과 더불어 기본적인 정렬 알고리즘이다.
선택 정렬 방법의 아이디어는 현재 범위에서 가장 작은 수를 선택하여 그 범위의 첫번째 위치로 선택한 수를 이동시키는 것이다. 단, 매 단계에서 범위를 1씩 줄여나간다. 즉, N개의 수로 이루어진 수열을 정렬하고자 할 때, 1단계는 첫번째 위치의 수~ N번째 위치의 수를 범위로 하고, 2단계는 두번째 위치의 수~N번째 위치의 수를 범위로 하고.....결국, 범위가 N번째 위치의 수~N번째 위치의 수가 되면 알고리즘은 종료된다.
예를 들어, 수열 7,4,1,8,2,5 을 오름차순으로 정렬하려고 한다. 이때, 각 단계의 선택 범위와 선택한 수의 이동 결과를 나타내면 다음과 같다.
1단계 범위 : 초기 수열의 첫번째 수~여섯번째 수
수열 7~5 중에 가장 작은 수 1을 '선택'하여, 7과 1을 비교한 후 교체한다.
1,4,7,8,2,5 => 이렇게 하면 1이 확정된다.
2단계 범위 : 1단계 수열의 두번째 수~여섯번째 수
이제 수열 4~5 중에 가장 작은 수 2를 '선택'하여, 4와 2를 비교한 후 교체한다.
1,2,7,8,4,5 => 이렇게 하면 2가 확정된다.
3단계 범위 : 2단계 수열의 세번째 수~여섯번째 수
이제 수열 7~5 중에 가장 작은 수 4를 '선택'하여, 7과 4를 비교한 후 교체한다.
1,2,4,8,7,5 => 이렇게 하면 4가 확정된다.
4단계 범위 : 3단계 수열의 네번째 수~여섯번째 수
이제 수열 8~5 중에 가장 작은 수 5를 '선택'하여, 8과 5를 비교한 후 교체한다.
1,2,4,5,7,8 => 이렇게 하면 4가 확정된다.
5단계 범위 : 4단계 수열의 다섯번째 수~여섯번째 수
이제 수열 7~8 중에 가장 작은 수 7를 '선택'하여, 7과 7를 비교한 후 교체한다.
1,2,4,5,7,8 => 이렇게 하면 7이 확정된다.
6단계 이제 8만 남아있으므로, 알고리즘은 종료된다.
1,2,4,5,7,8 => 정렬 끝
이러한 선택 정렬 알고리즘은 반복 구조과 재귀 구조를 이용하여 각각 구현해 보자.
'컴퓨터교육' 카테고리의 다른 글
Scratch 를 이용한 정렬 알고리즘 (0) | 2010.01.12 |
---|---|
정보, 컴퓨터 과학, 그리고 그 위상과 방향 (0) | 2009.12.22 |
Youtube 동영상 이용 방법 변경 안내 (0) | 2009.07.03 |
5장. 추가 연습 문제 : 따라하기 5-4의 수정 (0) | 2009.07.03 |
6장. 추가 연습 문제 : 선풍기 켜고 끄기 (0) | 2009.07.03 |