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
반응형
'언어 > C언어' 카테고리의 다른 글
[c언어] 배열을 이용한 FIFO구조 만들기 (1) | 2023.11.19 |
---|---|
[C언어] malloc 함수란? (0) | 2023.10.30 |
[c언어] strcpy 함수 (1) | 2023.10.30 |
[c언어] 멀티스레딩과 병렬 프로그래밍 (0) | 2023.10.28 |
[C언어] strstr 함수 사용 (2) | 2023.10.27 |
댓글