C \ C++/C 개념 정리

qsort() 함수

안정민 2023. 3. 21. 13:03

C에서 Quick Sort인 qsort함수 사용하기

기본적으로 stdlib.h에서 Quick Sort 함수인 qsort 함수를 제공해주며 아래와 같습니다.

void qsort(void *base, size_t nel, size_t width, int(*compare)(const void *, const void *);
-base) 배열의 각 원소들의 총 수
-nel) 배열의 각 원소들의 총 수
-width) 배열에서 원소 하나의 크기
-* compare) 비교를 수행할 함수 포인터, C언어 안에서는 함수를 선언하고 구현한 뒤 다음처럼 포인터로 특정 함수를 지정할 수 있음

4번째 인자에 대해서 조금 더 자세히 설명하면 비교함수 내부에는 1, 0 , -1중에 하나를 반환해야합니다. 만약 오름차순으로 정렬을 하고 싶다면 비교함수 내부에서 첫번째 변수가 두번쨰 변수보다 클 때 1 첫번째 변수가 두번째 변수보다 작을 때 -1 같을 때 0을 반환하도록 작성하면 됩니다. 물론 내림차순의 경우 1과 -1을 반환하는 부분의 등호를 바꾸어주면됩니다.

int static compare (const void* first, const void* second)
{
    if (*(int*)first > *(int*)second)
        return 1;
    else if (*(int*)first < *(int*)second)
        return -1;
    else
        return 0;
}