冒泡排序另一种算法
#include <stdio.h>
void swap (char *e1, char *e2, int width)
{
int i;
for(i = 0;i < width;i++)
{
char temp = *e1;
*e1 = *e2;
*e2 = temp;
e1 ++;
e2 ++;
}
}
void cmp_int (const void *e1, const void *e2)
{
return *(int *)e1 - *(int *)e2;
}
void bubble_sort (int *base,int num,int width,int (*cmp)(void *e1,void *e2))
{
int i,j;
for (i = 0;i < num-1; i++)
{
for (j = 0;j < num -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);
}
}
}
}
void test4 ()
{
int arr[10] = {9,8,7,6,5,4,3,2,1,0};
int sz = sizeof (arr) / sizeof (arr[0]);
bubble_sort (arr,sz,sizeof(arr[0]),cmp_int);
printf ("the sored number is :\n");
for (int i = 0;i < 10;i++)
{
printf ("%d ",arr[i]);
}
}
int main ()
{
test4 ();
return 0;
}