//能排序任何数据类型的函数
void my_bubble(void* p, int len, int width)
{
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - 1 - i; j++)
{
if (*((char*)p + j * width) > *((char*)p + (j + 1) * width))
{
for (int k = 0; k < width; k++)
{
char temp = *((char*)p + j * width + k);
*((char*)p + j * width + k) = *((char*)p + (j + 1) * width + k);
*((char*)p + (j + 1) * width + k) = temp;
}
}
}
}
return;
}
int main(void)
{
int ch1[] = { 5,4,1,2,8,9,3,10,7,6 };
double ch2[] = { 1.0,10.0,6.0,7,9,2,4,5,8,3 };
char ch3[] = { '2','7','9','10','4','6','1','3','5','8' };
//printf("%c\n", ch3[0]);
int a = sizeof(int);
int b = sizeof(double);
int c = sizeof(char);
//printf("%d\n", a);
//printf("%zd\n", sizeof(ch1));
for (int i = 0; i < 10; i++)
{
printf("%lf\n", ch2[i]);
}
my_bubble(ch2, 10, b);
printf("排序后:\n");
for (int i = 0; i < 10; i++)
{
printf("%lf\n", ch2[i]);
}
return 0;
}
结果是只有int型的成功升序了,double和char型为什么没成功呢?
思路是按照该链接上的冒泡排序改装模块怎么样才能做到对多种数据类型排序?C语言快速排序——qsort函数及其模拟实现_qsort怎么表示升序-CSDN博客我可能还没有完全领悟