#include <stdio.h>
// 함수포인터 예제
// 컴파일해서 라이브러리로 보관(즉 이진 기계어 코드 형식으로)
typedef int(*Compare)(int, int);
// 결국 qsort()의 원리가 이처럼 함수를 인자로 받아서 sort 한다.
// 알고리즘은 : sort 함수가
// sort 기준은 : 사용자가
void sort(int* x, int sz, Compare cmp)
{
int i, j, temp;
for(i=0; i<sz; ++i)
{
for(j=i+1; j <sz; ++j)
{
if( cmp( x[i], x[j]) > 0) //외부에서 전달된 함수 다시 호출해서 비교
{
temp = x[i];
x[i] = x[j];
x[j] = temp;
}
}
}
}
#include <stdlib.h> // for abs()
//-----------------------------------------------
int cmp1(int a, int b)
{
return abs(b)-abs(a);
//return abs(a) - abs(b) ;
}
void main()
{
int i = 0;
int y[10] = { 1,3,-6,7,9,10,-2,4,5,8 }; //아무 숫자나 10개 넣으세요
sort(y, 10, cmp1); // 어떻게 sort할 것인가를 정하기 위해
// 두 원소를 비교하는 함수를 한개 제공한다.
for(i=0;i<10; ++i)
{
printf("%d ", y[i]);
}
}
'프로그래밍' 카테고리의 다른 글
typedef에 관하여 (0) | 2009.07.19 |
---|---|
Quick Sort (0) | 2009.07.19 |
함수 및 포인터 (0) | 2009.07.19 |
Flexible Array (0) | 2009.07.19 |
Error Handling (0) | 2009.07.19 |
댓글