使用冒泡排序和回调函数模拟实现qsort函数
qsort函数是一个快速排序函数,在stdlib.h文件中定义,函数原型为viod qsort(void* base, size_t nelem,size_t width,int(*Comp)(const void* ,const void*));*base为要排序的数组名,nelem 为要排序数组的长度,width为数组元素的大小(一字节为单位)默认是从小到大排序的, (*Comp)(const void* p1,const void*p2)是自定义的判断大小的指针。
Comp函数的返回值在qsort说明:
使用回调函数,模拟实现qsort(采用冒泡的方式)。
//自定义的比较函数 int int_cmp(const void* p1, const void* p2) { return(*(int*)p1 - *(int*)p2); } //按字节交换函数 void _swap(void* p1, void* p2, int size) { int i = 0; for (i = 0; i<size; i++) { char tmp = *((char*)p1 + i); *((char*)p1 + i) = *((char*)p2 + i); *((char*)p2 + i) = tmp; } } //使用冒泡排序模拟qsort void bubble(void* base, int count, int size, int(*cmp)(void*, void*)) { int i = 0; int j = 0; for (i = 0; i<count - 1; i++) { for (j = 0; j<count - i - 1; j++) { if (cmp((char*)base + j*size, (char*)base + (j + 1)*size)>0) { _swap((char*)base + j*size, (char*)base + (j + 1)*size, size); } } } }
先前有错误,已修改。