快速排序,void Qsort(void *base,int nelem,int width, int (*fcmp)(const void *,const void *))的实现。
2013-10-28 22:28
441 查看
void swap(void * pLeft, void * pRight , int width) { void * tmp = malloc(width); memcpy( tmp , pLeft , width ); memcpy( pLeft , pRight , width ); memcpy( pRight, tmp , width ); free(tmp); tmp = NULL; } void qs( void *pHead ,int begin, int end , int width, int (*fcmp)(const void *,const void *)) { void * compare = malloc(width); memcpy( compare , &((char *)pHead)[begin*width], width); int left = begin; int right = end; if (left > right) { return; } while (left < right) { while ( (left < right) && (fcmp( &((char *)pHead)[right*width] , compare )) >= 0 ) { right--; } swap( &((char *)pHead)[left*width], &((char *)pHead)[right*width], width); while ( (left < right) && (fcmp( &((char *)pHead)[left*width] , compare )) < 0 ) { left++; } swap(&((char *)pHead)[right*width], &((char *)pHead)[left*width], width ); } memcpy( &((char *)pHead)[right*width] , &((char *)pHead)[left*width], width); qs( pHead , begin , right - 1 , width , fcmp); qs( pHead , right + 1 , end , width , fcmp); free(compare); compare = NULL; } void mryQsort(void *base,int nelem,int width, int (*fcmp)(const void *,const void *)) { qs( base , 0, nelem - 1 , width , fcmp); } int cmp (const void * a,const void * b) { return -(*(int*)a - *(int*)b); } int main(int argc, char *argv[]) { int a[9] = {4,2,3,1,6,5,7,9,8}; ccBsort( a, 10, 4, funp); mryQsort( a , 9, 4, funp); }
相关文章推荐
- void qsort (void* base, size_t num, size_t size, int (*compar)(const void*,const void*)
- 快速排序模板方法,只实现了int比较的仿函数
- 编写一个void sort(int*x,int n)实现将x数组中的n个数据从大到小排序。n及数组元素在主函数中输入。将结果显示在屏幕上并输出到文件
- 快速排序--自行实现+qsort+sort
- 编写一个void sort(int*x,int n)实现将x数组中的n个数据从大到小排序。n及数组元素在主函数中输入。将结果显示在屏幕上并输出到文件
- 快速排序的python实现与考点
- Java&&JavaScript:实现快速排序
- 快速排序-c++(分别用数组和容器实现)
- 快速排序的递归实现
- 快速排序和冒泡排序的时间复杂度分析(C++算法实现对比)
- 利用C实现泛型(generics)效果---原地洗牌,快速排序
- 快速排序之Java实现
- 快速排序的php实现
- 快速排序----QuickSort 中位数实现
- 快速排序partition过程常见的两种写法+快速排序非递归实现
- 快速排序的非递归实现
- 快速排序、堆排序、希尔排序实现
- 快速排序的递归和非递归实现
- 利用qsort库函数实现快速排序
- 用Java实现快速排序