본문 바로가기
언어/C언어

[c언어] qsort 함수란?

by 코딩히어로 2023. 10. 30.
728x90

C 언어에서 qsort() 함수는 배열의 요소를 정렬하는 데 사용되는 표준 라이브러리 함수 중 하나입니다. 

"Quick Sort"의 약어로, 퀵 정렬 알고리즘을 기반으로 동작합니다. qsort() 함수는 정렬된 결과로 배열의 요소를 재배열하며, 배열의 요소 형식에 따라 다양한 데이터 유형을 정렬할 수 있습니다

 

qsort() 함수의 프로토타입:

 

void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));

 

  • base: 정렬할 배열의 시작 지점을 가리키는 포인터입니다.
  • nmemb: 배열의 요소 수입니다.
  • size: 각 요소의 크기(바이트)입니다.
  • compar: 사용자 지정 비교 함수를 가리키는 포인터입니다.

 

사용 방법:

 

1. 사용자 정의 비교 함수(compar) 작성:


qsort() 함수는 비교 함수를 필요로 합니다. 비교 함수는 두 요소를 비교하여 정렬 순서를 결정합니다. 비교 함수는 다음과 같은 형태를 가져야 합니다.

 

int compar(const void *a, const void *b);

 

비교 함수는 a와 b를 받아서 a가 b보다 작으면 음수, 같으면 0, 크면 양수를 반환합니다.

 


2. qsort() 함수 호출:


qsort() 함수를 사용하여 배열을 정렬합니다. 예를 들어, 정수 배열을 정렬하는 경우 다음과 같이 호출할 수 있습니다.

 

int arr[] = {5, 2, 9, 1, 5};
size_t n = sizeof(arr) / sizeof(arr[0]);

qsort(arr, n, sizeof(int), compar);

 

여기서 compar는 사용자 정의 비교 함수입니다.

 

 

예제 코드:

 

아래는 정수 배열을 qsort() 함수를 사용하여 정렬하는 예제 코드입니다.

 

#include <stdio.h>
#include <stdlib.h>

int compar(const void *a, const void *b) {
    return (*(int*)a - *(int*)b);
}

int main() {
    int arr[] = {5, 2, 9, 1, 5};
    size_t n = sizeof(arr) / sizeof(arr[0]);

    qsort(arr, n, sizeof(int), compar);

    printf("정렬된 배열: ");
    for (size_t i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }

    return 0;
}

 

qsort() 함수는 C 언어에서 다양한 데이터 유형을 정렬하기 위한 강력하고 유용한 도구입니다. 

사용자 정의 비교 함수를 통해 다양한 정렬 요구 사항을 충족시킬 수 있으며, 배열의 요소를 효과적으로 정렬하는 데 사용됩니다. 이를 통해 프로그래머는 데이터 정렬 작업을 간단하게 수행할 수 있고, 코드의 효율성을 향상시킬 수 있습니다

728x90
반응형

댓글