2.4.2 선택 정렬 알고리즘 구현

이제 선택 정렬 알고리즘을 구현합시다.

 

먼저 내부 반복문과 외부 반복문에서 사용할 두 개의 변수를 선언하세요.

 

그리고 최대값이 있는 위치를 기억할 변수도 선언합니다. 그리고 교환에서 사용할 임시 변수도 선언하세요.

 

외부 반복문에서는 정렬할 범위를 점진적으로 줄여나갑니다.

 

내부 반복문에서는 max를 0으로 초기화하고 j를 1로 초기화합니다. 이는 일단 맨 앞에 있는 요소를 최대값이 있는 위치로 설정하고 그 다음 요소부터 최대값과 비교하기 위해서입니다. 그리고 j는 순차적으로 다음 인덱스로 이동합니다.

 

만약 max인덱스의 요소보다 j인덱스의 요소가 더 크면 두 개의 max를 j로 설정합니다.

내부 반복문을 수행한 후에 최대값이 있는 max인덱스 요소와 정렬할 범위의 마지막 위치에 있는 요소를 교환합니다. 정렬할 원소 개수가 i일 때 마지막 위치의 요소는 i-1을 주의하세요.

 

위 알고리즘을 테스트하는 코드는 버블 정렬과 같습니다. 여기에서는 설명을 생략할게요. 다만 시뮬레이션 함수의 bubble_sort 함수 호출을 select_sort 함수 호출로 변경하세요.

 

▷ 실행 결과

——–제목순——-

<0000006334>:<0000000041>

저자:0000018467

<0000017421>:<0000000292>

저자:0000012382

<0000011942>:<0000000491>

저자:0000002995

<0000032391>:<0000004827>

저자:0000005436

<0000026962>:<0000011478>

저자:0000029358

<0000000153>:<0000014604>

저자:0000003902

<0000019895>:<0000018716>

저자:0000019718

<0000009961>:<0000023281>

저자:0000016827

<0000028145>:<0000024464>

저자:0000005705

<0000015724>:<0000026500>

저자:0000019169

——–번호순——-

<0000000153>:<0000014604>

저자:0000003902

<0000006334>:<0000000041>

저자:0000018467

<0000009961>:<0000023281>

저자:0000016827

<0000011942>:<0000000491>

저자:0000002995

<0000015724>:<0000026500>

저자:0000019169

<0000017421>:<0000000292>

저자:0000012382

<0000019895>:<0000018716>

저자:0000019718

<0000026962>:<0000011478>

저자:0000029358

<0000028145>:<0000024464>

저자:0000005705

<0000032391>:<0000004827>

저자:0000005436

1000개 정렬에 걸린 시간:103

10000개 정렬에 걸린 시간:7923