int compare(const void* e1, const void* e2)
{
return *(int*)e1 - *(int*)e2;
}
void Swap(char* buf1, char* buf2, int sz)
{
for (int i = 0; i < sz; i++)
{
char tmp = *buf1;
*buf1 = *buf2;
*buf2 = tmp;
buf1++;
buf2++;
}
}
void bubble_sort(void* base, int num, int sz, int (*compare)(const void*, const void*))
{
for (int i = 0; i < num-1; i++)
{
int count = 0;
for (int j = 0; j < num-1-i; j++)
{
if (compare((char*)base+sz*j,(char*)base+sz*(j+1)) > 0)
{
Swap((char*)base + sz * j, (char*)base + sz * (j + 1), sz);
count++;
}
}
if (count)
break;
}
}
C语言实现对任意类型的数据进行冒泡排序(回调函数)
最新推荐文章于 2022-12-31 20:55:21 发布