1,453
社区成员




学c语言的小白,跟着视频内容打的,没报错误。
求指导,谢谢!
void Swap(int*q1,int*q2, int width)
{
int i = 0;
for (i = 0; i < width; i++)
{
int num = *q1;
*q1 = *q2;
*q2 = num;
q1++;
q2++;
}
}
void bubble(void*base, int sz, int width,int(* cmp)(const void*e1,const void*e2))
{
int i = 0;
int j = 0;
int num = 0;
for (i = 0; i < sz - 1; i++)
{
for (j = 0; j < sz - i - 1; j++)
{
if (cmp((int*)base + j * width, (int*)base + (j + 1)*width) > 0)//比较两个元素
Swap((int*)base + j * width, (int*)base + (j + 1)*width,width);
}
}
}
int cmp_cr(const void*e1, const void* e2)
{
return *(int*)e1 - *(int*)e2;
}
int main()
{
int i = 0;
int arr[] = { 6,8,4,2,5,10,12 };
int sz = sizeof(arr) / sizeof(arr[0]);
//第一个参数:待排序数组存储元素的地址
//第二个参数:待排序数组的元素个数
//第一个参数:待排列数组的元素大小(单位是字节)
//第一个参数:比较待排列数组元素的大小,参数是两个待比较的元素
bubble(arr, sz, sizeof(arr[0]), cmp_cr);
for (i = 0; i < sz; i++)
{
printf("%ld ",arr[i]);
}
return 0;
}