int char_compare(void const * c1,void const* c2) //比较函数
{
int a = *((int*)c1);
int b = *((int*)c2);
return a>b ? 1 : a<b ? -1 : 0;
}
void Swap(char *str1,char *str2,int size)
{
while (size--)
{
char tmp = *str1;
*str1 = *str2;
*str2 = tmp;
str1++;str2++;
}
}
void MyQsort(void *str,int len,int elen,int(*compare)(void const*,void const*)) //基于回调函数写的排序算法
{
int i = 0;
int j = 0;
int flag = 1;
for (i=0; i<len-1; i++)
{
for (j=0; j<len-1-i; j++)
{
if (compare((char*)str+j*elen,(char*)str+(j+1)*elen)>0)
{
flag = 0;
Swap((char*)str+j*elen,(char*)str+(j+1)*elen,elen);
}
}
if (flag)
return;
}
}