#include<stdio.h>
int cmp_by_int(void* e1,void* e2)
{
return *(int*)e1 - *(int*)e2;
}
void Swap(char* buff1, char* buff2, int width)
{
for (int i = 0; i < width; i++)
{
char tmp = *buff1;
*buff1 = *buff2;
*buff2 = tmp;
buff1++;
buff2++;
}
}
void my_qsort(void*base, int sz, int width, int(*cmp)(void* e1, void* e2))
{
for (int i = 0; i < sz - 1; i++)
{
for (int j = 0; j < sz - 1 - i; j++)
{
if (cmp((char*)base + j*width, (char*)base + (j + 1)*width)>0)
{
Swap((char*)base + j*width, (char*)base + (j + 1)*width, width);
}
}
}
}
int main()
{
int arr[5] = { 5, 4, 3, 2, 1 };
int sz = sizeof(arr) / sizeof(arr[0]);
my_qsort(arr, sz, sizeof(arr[0]), cmp_by_int);
for (int i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
sqort函数的模拟实现
最新推荐文章于 2023-04-27 21:29:57 发布