알고리즘

[알고리즘] 선택 정렬 (Selection Sort)

행복하개! 2020. 8. 24. 14:59

선택 정렬 (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위치의 값을 서로 바꾼다. 
}