프로그래밍/C/C++
C :: 퀵소트 라이브러리 함수 사용법
청년코더
2010. 6. 30. 15:20
# qsort 함수
[함수의 원형]
void qsort(
void * _Base, // 배열의 시작 주소
size_t _NumOfElements, // 배열 요소의 갯수
size_t _SizeOfElements, // 배열 요소 하나의 크기(바이트 단위)
int (* _PtFuncCompare)(constvoid *, constvoid *)
// 비교함수. 포인터를 통하여 두개의 요소를 비교하여 비교 결과를 정수로 반환한다.
// 사용자가 만들어서 제공하여야 하며 원형은 변경하면 안된다.
);
[사용 예제]
#include <stdio.h>
#include <stdlib.h>
int compare1(constvoid *arg1,constvoid *arg2)
{
if( *(int*)arg1 > *(int*)arg2 ) return1;
elseif( *(int*)arg1 == *(int*)arg2 ) return0;
elsereturn -1;
}
int compare2(constvoid *arg1,constvoid *arg2)
{
if( *(double*)arg1 > *(double*)arg2 ) return1;
elseif( *(double*)arg1 == *(double*)arg2 ) return0;
elsereturn -1;
}
int main()
{
int list1[10]={9,1,4,3,2,5,7,6,8,10};
double list2[5]={2.1,1.1,8.9,9.3,5.1};
int i;
qsort((void*)list1,(size_t)10,sizeof(int),compare1);
qsort((void*)list2,(size_t)5,sizeof(double),compare2);
for(i=0;i<10;i++)
printf("%d ",list1[i]);
puts("");
for(i=0;i<5;i++)
printf("%.1f ",list2[i]);
return0;
}