问题遇到的现象和发生背景
想要完成一个冒泡排序,但排序结果不是我想要的
问题相关代码,请勿粘贴截图
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int cmp_int(const void*e1,const void*e2)
{
return *(int*)e1 - *(int*)e2;
}
void Swp(char*buf1,char*buf2,int width)
{
int i = 0;
for ( i = 0; i < width; i++)
{
char cmp = *buf1;
*buf1 = *buf2;
*buf2 = cmp;
buf1++;
buf2++;
}
}
void bubble_sort(void *base,int sz,int width,int(*cmp)(void *e1,void *e2))
{
int i = 0;
for ( i = 0; i < sz-1; i++)
{
int j = 0;
for ( j = 0; j < sz-1-i; j++)
{
if(cmp((char*)base+j*width,(char*)base+(j+1)*width)>0);
{
Swp((char*)base + j * width, (char*)base + (j + 1) * width, width);
}
}
}
}
void test1()
{
int arr[10] = {9,8,7,2,5,4,3,6,1,0};
int sz = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr,sz,sizeof(arr[0]),cmp_int);
}
int main()
{
test1();
return 0;
}
运行结果及报错内容
0,1,6,3,4,5,2,7,8,9
我的解答思路和尝试过的方法
使用冒泡排
我想要达到的结果
0,1,2,3,4,5,6,7,8,9