自己实现一个bubble_sort(冒泡排序),可以完成不同类型数据的排序。
#include <stdio.h>
int compare(void* elem1,void* elem2)
{
return (*(int*)elem1)-(*(int*)elem2);
}
void bubble_sort(int * arr,int sz,int (*cmp)(void* elem1,void* elem2))
{
int i = 0;
int j = 0;
for (i=0; i<sz; i++)
{
for (j=0; j<sz-i-1; j++)
{
if ((*cmp)(&arr[j],&arr[j+1])>0)
{
arr[j] ^= arr[j+1];
arr[j+1] ^= arr[j];
arr[j] ^= arr[j+1];
}
}
}
}
void Print(int * arr,int sz)
{
int i = 0;
for (i=0; i<sz; i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
int main()
{
int arr[] = {9,8,7,6,5,4,3,2,1,0};
int sz = sizeof(arr)/sizeof(arr[0]);
Print(arr,sz);
bubble_sort(arr,sz, &compare);
Print(arr,sz);
return 0;
}