#include<stdio.h>
int cmp(const void *x, const void *y)
{
return (*(int *)x) - (*(int *)y);
}
void Swap(char *p1, char *p2, int width)
{
int i = 0;
for (i = 0; i < width; i++)
{
char tmp = *p1;
*p1 = *p2;
*p2 = tmp;
*p1++;
*p2++;
}
}
//Swap函数另一种写法
//void Swap(char *buf1,char *buf2,int width)
//{
// int i = 0;
// for (i = 0; i < width; i++)
// {
// char tmp = *(buf1 + i);
// *(buf1 + i) = *(buf2 + i);
// *(buf2 + i) = tmp;
// }
//}
void qsort(void *base, int size, int width) //需要传类型及字节大小
{
int i = 0;
int j = 0;
int ret = 0;
for (i = 0; i < size; i++)
{
for (j = 0; j < size - i - 1; j++)
{
if (cmp((char *)base + j*width, (char *)base + (j + 1)*width)>0)//强制转换为char*再通过加相应的的单位字节大小就可以实现逐对交换。
{
Swap((char *)base + j*width, (char *)base + (j + 1)*width, width);
}
}
}
}
int main()
{
int arr1[] = { 1, 2, 4, 6, 3, 2 };
qsort(arr1, sizeof(arr1) / sizeof(arr1[0]), sizeof(arr1[0]));
for (int i = 0; i < sizeof(arr1) / sizeof(arr1[0]); i++)
{
printf("%d ", arr1[i]);
}
getchar();
return 0;
}
模仿qsort的功能实现一个通用的冒泡排序(易理解版)
猜你喜欢
转载自blog.csdn.net/c1029323236/article/details/80410927
今日推荐
周排行