다음 C 코드는 쉘 정렬을 구현한 것이다. 코드의 출력 결과는?
#include <stdio.h>
void sort(int arr[], int n) {
int count = 1;
int i, j, k, h, val;
for (h = n/2; h > 0; h /= 2) {
for (i = 0; i < h; i++) {
for (j = i+h; j < n; j += h) {
val = arr[j];
k = j;
while (k > h-1 && arr[k-h] > val) {
arr[k] = arr[k-h];
k -= h;
}
arr[k] = val;
if (count == 5)
for (int t = 0; t < 6; t++)
printf("%d ", arr[t]);
count++;
}
}
}
}
int main() {
int a[6] = {5, 9, 2, 3, 6, 7};
sort(a, 6);
}- ①2 3 5 6 9 7
- ②2 3 6 5 9 7
- ③3 6 2 5 9 7
- ④3 9 2 5 6 7
선지를 골라 바로 채점해 보세요.
정답 ②
출처: 인사혁신처 공개 기출(공공데이터포털, 이용허락 제한 없음)