자료 저장소

# 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;
}
댓글 로드 중…

최근에 게시된 글