선택 정렬 (Selection Sort)
1) 개요
최소 값을 선택해서 이동한다.
|
정렬된 데이터 |
정렬할 데이터 |
입력 데이터 |
|
17 14 11 19 13 |
1단계 |
11 |
17 14 19 13 |
2단계 |
11 13 |
17 14 19 |
3단계 |
11 13 14 |
17 19 |
4단계 |
11 13 14 17 |
19 |
5단계 |
11 13 14 17 19 |
|
2) 절차
입력
17 |
14 |
11 |
19 |
13 |
15 |
18 |
12 |
16 |
20 |
i = 0
i 위치부터 끝까지 최소 값을 찾는다.
17 |
14 |
11 |
19 |
13 |
15 |
18 |
12 |
16 |
20 |
최소값을 i위치로 이동한다.
11 |
14 |
17 |
19 |
13 |
15 |
18 |
12 |
16 |
20 |
i = 1
i 위치부터 끝까지 최소 값을 찾는다.
11 |
14 |
17 |
19 |
13 |
15 |
18 |
12 |
16 |
20 |
최소값을 i위치로 이동한다.
11 |
12 |
17 |
19 |
13 |
15 |
18 |
14 |
16 |
20 |
i = 2
i 위치부터 끝까지 최소 값을 찾는다.
11 |
12 |
17 |
19 |
13 |
15 |
18 |
14 |
16 |
20 |
최소값을 i위치로 이동한다.
11 |
12 |
13 |
19 |
17 |
15 |
18 |
14 |
16 |
20 |
i = 3
11 |
12 |
13 |
19 |
17 |
15 |
18 |
14 |
16 |
20 |
11 |
12 |
13 |
14 |
17 |
15 |
18 |
19 |
16 |
20 |
i = 4
11 |
12 |
13 |
14 |
17 |
15 |
18 |
19 |
16 |
20 |
11 |
12 |
13 |
14 |
15 |
17 |
18 |
19 |
16 |
20 |
i = 5
11 |
12 |
13 |
14 |
15 |
17 |
18 |
19 |
16 |
20 |
11 |
12 |
13 |
14 |
15 |
16 |
18 |
19 |
17 |
20 |
i = 6
11 |
12 |
13 |
14 |
15 |
16 |
18 |
19 |
17 |
20 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
19 |
18 |
20 |
i = 7
11 |
12 |
13 |
14 |
15 |
16 |
17 |
19 |
18 |
20 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
i = 8
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
i = 8 단계가 끝이다.
i = 9 단계에서 남은 값이 1개뿐인데, 여기서 최소값을 찾는 것은 의미 없기 때문이다.
즉 i = a.length-2 단계가 끝이다. (a.length 값은 10 이고 a.length-2 값은 8이다)
3) 요약
가장 작은 값을 찾아서 0 위치에 놓는다.
그 다음 작은 값을 찾아서 1 위치에 놓는다.
그 다음 작은 값을 찾아서 2 위치에 놓는다.
for (int i = 0; i < a.length-1; i++) {
// 배열 a의 i부터 끝까지 최소값을 찾는다.
// 최소값과 i위치의 값을 서로 바꾼다.
}
'알고리즘' 카테고리의 다른 글
[알고리즘] 병합 정렬 (Merge Sort) (0) | 2020.08.25 |
---|---|
[알고리즘] 삽입 정렬 (Insertion Sort) (0) | 2020.08.24 |
[알고리즘] 버블 정렬 (Bubble Sort) (0) | 2020.08.24 |
[알고리즘] 백준 11729 자바 JAVA 하노이의 탑 (0) | 2020.08.16 |
[알고리즘] 에라토스테네스의 체 자바 java 소수 판별 (0) | 2020.08.09 |