C \ C++/C 개념 정리
qsort() 함수
안정민
2023. 3. 21. 13:03
C에서 Quick Sort인 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) 비교를 수행할 함수 포인터, C언어 안에서는 함수를 선언하고 구현한 뒤 다음처럼 포인터로 특정 함수를 지정할 수 있음 |
4번째 인자에 대해서 조금 더 자세히 설명하면 비교함수 내부에는 1, 0 , -1중에 하나를 반환해야합니다. 만약 오름차순으로 정렬을 하고 싶다면 비교함수 내부에서 첫번째 변수가 두번쨰 변수보다 클 때 1을 첫번째 변수가 두번째 변수보다 작을 때 -1을 같을 때 0을 반환하도록 작성하면 됩니다. 물론 내림차순의 경우 1과 -1을 반환하는 부분의 등호를 바꾸어주면됩니다.
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;
}