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 함수는 문자열 ab보다 클 때 1, 문자열 ab보다 작을 때 -1, 문자열이 같을 때 0이므로 오름차순 정렬기준과 같기 때문입니다(Visual Studio 기준).