50.5 연습문제: 퀵 정렬 함수 사용하기
다음 소스 코드를 완성하여 문자열이 들어있는 배열의 값을 알파벳 순서(오름차순)로 정렬하세요. 문자열 비교는 strcmp 함수를 사용하세요('Unit 37 문자열 길이를 구하고 비교하기' 참조).
practice_quick_sort.c
#include <stdio.h> #include <stdlib.h> #include <string.h> int compare(const void *a, const void *b) { _____________________________________ } int main() { char s1[10][8] = { "india", "delta", "bravo", "kilo", "alfa", "echo", "hotel", "juliett", "golf", "charlie" }; qsort(s1, sizeof(s1) / sizeof(s1[0]), sizeof(s1[0]), compare); for (int i = 0; i < 10; i++) { printf("%s ", s1[i]); } printf("\n"); return 0; }
실행 결과
alfa bravo charlie delta echo golf hotel india juliett kilo
정답
return strcmp((char *)a, (char *)b);
해설
문자열 10개가 주어졌고, qsort 함수로 정렬을 하고 있습니다. 이 배열을 알파벳 순서로 정렬하려면 비교 함수에서 strcmp 함수의 반환값을 그대로 반환해주면 됩니다. 즉, strcmp 함수는 문자열 a가 b보다 클 때 1, 문자열 a가 b보다 작을 때 -1, 문자열이 같을 때 0이므로 오름차순 정렬기준과 같기 때문입니다(Visual Studio 기준).