안녕하세요 길벗수험서 운영팀입니다.
선택정렬 알고리즘을 떠올려 보세요.
선택정렬에서 오름차순을 한다고 가정했을 때 첫회전에서
a[0]을 기준으로 a[1]~a[n]까지 비교해가면서 작은 경우 매번 교환이 이뤄질 것입니다.
해당 알고리즘은 조금 다릅니다.
a[0]을 기준으로 작은 것이 있다면 해당 위치를 sw에 기억합니다.
5 / 4 / 7 / 2 / 3
이 배열에 있다고 가정하죠.
a[0] 을 갖고 a[1]을 비교하면 4<5는 참이므로 a[1]을 기억합니다.
다음 2와 비교할 때 2<4는 참이므로 a[4]를 기억합니다.
이제 기억한 a[4]를 처음 기준이 되는 a[0]과 교환합니다.
2 / 4 / 7 / 5 / 3
이렇게 바뀌게 되죠.
즉, a[0]부터 a[n]까지 회전하면서 자기보다 뒤에 있는 값중 최소값의 위치를 sw에 저장하여 마지막에 교환하는 방식입니다.
행복한 하루되세요 :)
-
관리자2019-04-12 11:01:04
안녕하세요 길벗수험서 운영팀입니다.
선택정렬 알고리즘을 떠올려 보세요.
선택정렬에서 오름차순을 한다고 가정했을 때 첫회전에서
a[0]을 기준으로 a[1]~a[n]까지 비교해가면서 작은 경우 매번 교환이 이뤄질 것입니다.
해당 알고리즘은 조금 다릅니다.
a[0]을 기준으로 작은 것이 있다면 해당 위치를 sw에 기억합니다.
5 / 4 / 7 / 2 / 3
이 배열에 있다고 가정하죠.
a[0] 을 갖고 a[1]을 비교하면 4<5는 참이므로 a[1]을 기억합니다.
다음 2와 비교할 때 2<4는 참이므로 a[4]를 기억합니다.
이제 기억한 a[4]를 처음 기준이 되는 a[0]과 교환합니다.
2 / 4 / 7 / 5 / 3
이렇게 바뀌게 되죠.
즉, a[0]부터 a[n]까지 회전하면서 자기보다 뒤에 있는 값중 최소값의 위치를 sw에 저장하여 마지막에 교환하는 방식입니다.
행복한 하루되세요 :)