Programming/C
qsort를 사용하여 배열 정렬하기
moxie2ks
2025. 1. 27. 18:01
728x90
반응형
개요
C언어에서 배열을 내림차순, 오름차순으로 정렬해야 할 때, stdlib.h의 qsort 함수를 사용하여 데이터를 정렬할 수 있다.
본 글에서는 C에서 제공하는 qsort 함수에 대해 알아보자.
사용 방법
- #include <stdlib.h>
- 정수형 배열을 내림차순/올림차순 할 때 사용할 콜백함수 등록.
- 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): 비교를 수행할 함수 포인터.
예제 코드
#include <stdio.h>
#include <stdlib.h>
int compare1(void* first, void* second) {
if (*(int*)first > *(int*)second) {
return -1; // 내림차순의 경우 : 첫번째 값이 두번째 값보다 클경우 -1 리턴(오름차순일경우 1 리턴)
} else if (*(int*)first < *(int*)second) {
return 1; // 내림차순의 경우 : 두번째 값이 첫번째 값보다 클경우 1 리턴(오름차순일경우 -1 리턴)
}
return 0;
}
int compare2(void* first, void* second) {
if (*(int*)first > *(int*)second) {
return 1; // 내림차순의 경우 : 첫번째 값이 두번째 값보다 클경우 -1 리턴(오름차순일경우 1 리턴)
} else if (*(int*)first < *(int*)second) {
return -1; // 내림차순의 경우 : 두번째 값이 첫번째 값보다 클경우 1 리턴(오름차순일경우 -1 리턴)
}
return 0;
}
int main()
{
int array[5] = {1,3,2,4,5};
printf("Top down sort\n");
qsort(array, sizeof(array)/sizeof(int), sizeof(int), compare1);
for (int i = 0; i<sizeof(array)/sizeof(int); i++) {
printf("%d\n", array[i]);
}
printf("Bottom up sort\n");
qsort(array, sizeof(array)/sizeof(int), sizeof(int), compare2);
for (int i = 0; i<sizeof(array)/sizeof(int); i++) {
printf("%d\n", array[i]);
}
}
결과
참고 문헌
728x90
반응형