#include <stdio.h>
#include <stdlib.h>
typedef int(*Sort)(void * , void *);
void swap(void *p1, void *p2, int s)
{
int i;
char *p3 = (char *)p1;
char *p4 = (char *)p2;
char t;
for(i=0; i<s; ++i)
{
t = *(p3+i);
*(p3+i) = *(p4+i);
*(p4+i) = t;
}
}
void sort(void* vp, int sz, size_t size, Sort cmp)
{
char i, j;
char *tmp = (char *)vp;
for(i=0; i<sz; ++i)
{
for(j=i+1; j <sz; ++j)
{
if( cmp((tmp+i*size), (tmp+j*size)) > 0)
{
swap((tmp+i*size), (tmp+j*size), size);
}
}
}
}
int cmpi(int *pa, int *pb)
{
// return abs(*pa) < abs(*pb);
return *pa < *pb;
}
int cmpc(char *pa, char *pb)
{
return *pa < *pb;
}
int cmpf(double *pa, double *pb)
{
return *pa > *pb;
}
void main()
{
int i = 0;
int integer[10] = { 5,3,-6,-7,9,-4,-2,4,1,8 };
double f[10]= {2.3,6.6,4.3,1.6,8.5,9.2,6.2,4,1,32};
char c[10] = "xkdiwasivd";
sort(integer, 10, sizeof(integer[0]), cmpi);
sort(c,10,sizeof(c[0]),cmpc);
sort(f, 10, sizeof(f[0]), cmpf);
for(i=0; i<10; ++i)
{
printf("%d ", integer[i]);
}
printf("\n\n");
for(i=0; i<10; ++i)
{
printf("%c ", c[i]);
}
printf("\n\n");
for(i=0; i<10; ++i)
{
printf("%f\n ",f[i]);
}
}
'프로그래밍' 카테고리의 다른 글
Valiable Arguments (0) | 2009.07.19 |
---|---|
typedef에 관하여 (0) | 2009.07.19 |
Function Pointer EX (0) | 2009.07.19 |
함수 및 포인터 (0) | 2009.07.19 |
Flexible Array (0) | 2009.07.19 |
댓글