주어진 정수 배열 {26, 13, 77, 61, 35, 11, 8, 48, 15, 19}에 대한 합병 정렬(merge sort)의 순환 알고리즘(recursive algorithm)을 다음과 같이 구현하였다. 이 프로그램의 수행 과정에서 형성되는 배열의 순서로 옳지 않은 것은?
#include <stdio.h>
#define MAX 10
void merge( int list[], int temp[], int left, int middle, int right)
{
int i=left, j=middle+1, k=left, t;
for( ; i <= middle && j <= right ; ) {
if( list[i] <= list[j] )
temp[k] = list[i++];
else
temp[k] = list[j++];
k += 1;
}
if( i > middle ) {
for( t = j ; t <= right ;)
temp[k++] = list[t++];
} else {
for( t = i ; t <= middle ;)
temp[k++] = list[t++];
}
for( t = left ; t <= right ; t++ )
list[t] = temp[t];
}
void mergeSort( int list[], int temp[], int left, int right)
{
int middle = 0;
if( left < right ) {
middle = (left+right)/2;
mergeSort(list, temp, left, middle);
mergeSort(list, temp, middle+1, right);
merge(list, temp, left, middle, right);
}
}
int main(){
int source[10]={26, 13, 77, 61, 35, 11, 8, 48, 15, 19};
int temp[10] = {0x0,};
mergeSort(source, temp, 0, 9);
}- ①13, 26, 35, 61, 77, 11, 8, 48, 15, 19
- ②13, 26, 77, 61, 35, 11, 8, 48, 15, 19
- ③13, 26, 35, 61, 77, 8, 11, 15, 19, 48
- ④13, 26, 35, 61, 77, 8, 11, 15, 48, 19
선지를 골라 바로 채점해 보세요.
정답 ④
출처: 인사혁신처 공개 기출(공공데이터포털, 이용허락 제한 없음)