stdlib.h 안에 있다.
매개 변수는 다음과 같이 받는다.
여기서 비교 함수는 이런 식으로 구현하면 된다.
int compare(const void * a,const void * b)
{
if(*(int*)a > *(int*)b)
{
return -1;
}
else if(*(int*)a < *(int*)b)
{
return 1;
}
else return 0;
}
오름차순 정렬은 다음과 같다.
이건 qsort를 사용하기 위한 일종의 약속이다. 내림차순은 반대로 하면 된다. 만약 a < b 일 때 1을 반환하면 반대로 내림차순 정렬이 된다.
비교 함수를 간단하게 적기.
int compare(const void *a, const void *b)
{
return *(int *)a - *(int *)b; // 오름차순
}
int compare(const void *a, const void *b)
{
return *(int *)b - *(int *)a; // 내림차순
사용 예시
int main()
{
int numArr[10] = { 8, 4, 2, 5, 3, 7, 10, 1, 6, 9 }; // 정렬되지 않은 배열
qsort(numArr, sizeof(numArr) / sizeof(int), sizeof(int), compare);
for (int i = 0; i < 10; i++)
{
printf("%d ", numArr[i]); // 1 2 3 4 5 6 7 8 9 10
}
printf("\n");
return 0;
}