archive
qsort() 함수 본문
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;
}
'C \ C++ > C 개념 정리' 카테고리의 다른 글
C언어 goto문 개념정리 (0) | 2023.03.30 |
---|---|
rand(), srand() 함수 개념 정리 (0) | 2023.03.21 |
strtok() 함수 개념 (0) | 2023.03.21 |
[C언어 개념] 포인터 2 (0) | 2022.06.29 |
[C언어 개념] 포인터 연산 규칙 정리 (0) | 2022.06.26 |