Desc :
void qsort( void *base, size_t num, size_t width, int (*compare)(const void *elem1, const void *elem2) );
base - 정렬할 배열의 번지
num - 총 배열 요소의 개수
width - 배열 요소가 차지하는 크기
compare - 비교함수 포인터
elem1, elem2의 비교결과를 가지고 배열의 값을 앞뒤로 정렬한다
첫 번째 파라미터가 더 클 때 양수 반환,
첫 번째 파라미터가 더 작을 때 음수 반환,
같을 때 0을 반환하게 만든다 (내림차순일때는 반대로)
++문자열의 배열이라면, strcmpy 함수를 넣어 사용할 수 있다
Source Code :
#include <stdio.h>
#include <stdlib.h>
int intcmp(const void* v1, const void* v2); // 비교에 사용될 함수 선언
void main()
{
int i;
int array[5] = { 4,2,1,5,3 };
qsort(array, 5, sizeof(array[0]), intcmp);
for (i = 0; i < 5; i++) // 정렬된 배열 출력
{
printf("%d ", array[i]);
}
}
int intcmp(const void* v1, const void* v2) // 비교함수 정의
{
int cmpvalue1, cmpvalue2;
cmpvalue1 = *(int*)v1; //void형 포인터 쓰기전 데이터타입을 명시해주고, 포인터의 값을 대입
cmpvalue2 = *(int*)v2;
return cmpvalue1 - cmpvalue2; // 오름차순 정렬
}
Result :
'C' 카테고리의 다른 글
[C] 192 매크로 상수 정의하기 (1) | 2021.02.04 |
---|---|
[C] 191 이진 검색 사용하기 bsearch() (1) | 2021.02.04 |
[C] 189 난수 만들기 srand(), rand() (1) | 2021.02.03 |
[C] 188 x의 y승 pow() (1) | 2021.02.03 |
[C] 187 주어진 값을 정수/소수로 분리하기 modf() (1) | 2021.02.03 |