C언어. qsort() 사용하기

최대 1 분 소요

🌟 Quick Sort (퀵 정렬) 함수

퀵 정렬은 간단하게 말해서 여러 개의 데이터가 있는 배열을 큰 값과 작은 값으로 나누어 정렬하는 알고리즘이다.

stdlib.h에서 퀵 정렬을 하는 qsort()가 구현되어 있고, 기본 모양은 다음과 같다.

qsort(void *base, size_t nel, size_t width, int (*compare)(const void *, const void *);
  • base: 정렬할 배열의 포인터
  • nel: 배열의 length
  • width: 배열에 들어 있는 원소 하나의 크기
  • compare: 데이터를 어떻게 비교할 지 정하는 함수 포인터

여기서 compare은 직접 구현해야 하며, compare를 어떻게 구현하느냐에 따라 오름차순, 내림차순도 가능해진다.

🌟 사용법

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;
}

int main()
{
    int arr[] = {1,59,7,4,23,12,99}; //정렬할 배열
    int n = sizeof(arr)/sizeof(int); //배열의 크기
    
    qsort(arr, n, sizeof(int), compare);
}

compare 함수는 TWpower’s Tech Blog 여기 코드를 참고함!

arr을 출력하면 1, 4, 7, 12, 23, 59, 99 이렇게 나올 것이다.

댓글남기기