#include<stdio.h>
int cmp_int(const void* e1, const void* e2){
return *(int*)e1 - *(int*)e2;
}
void swap(char* buf1, char* buf2, int width){
int i=0;
for(i=0;i<width;i++){ //一次char*(走一个字节),交换一个类型的宽度
char temp = *buf1;
*buf1 = *buf2;
*buf2 = temp;
buf1++;
buf2++;
}
}
// 回调函数,函数指针指向函数的地址,在mp_sort中调用cmp_int函数
void mp_sort(const void* base,int sz, int width, int (*cmp)(const void* e1 , const 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){ //比较大小
swap((char*)base+j*width, (char*)base+(j+1)*width, width );
}
}
}
}
int main(){
int arr[] = {1,3,2,0,9,8,7,6,5,4};
int sz = sizeof(arr) / sizeof(arr[0]);
mp_sort(arr,sz,sizeof(arr[0]),cmp_int);
int i=0;
for(i=0;i<sz;i++){
printf("%d ",arr[i]);
}
printf("\n");
return 0;
}