[code]int (*qscmp)(); int qses; qsort(a, n, es, fc) char *a; int n, es; int (*fc)(); { qscmp = fc; qses = es; qs1(a, a+n*es); } qs1(a, l) char *a, *l; { register char *i, *j, *es; char *lp, *hp; int n, c; es = qses; start: if((n=l-a) <= es) return; n = ((n/(2*es))*es) & 077777; hp = lp = a+n; i = a; j = l-es; for(;;) { if(i < lp) { if((c = (*qscmp)(i, lp)) == 0) { ...
七种qsort排序方法 一、对int类型数组排序 int num[100]; Sample: int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; } qsort(num,100,sizeof(num[0]),cmp); 二、对char类型数组排序(同int类型) char word[100]; Sample: int cmp( const void *a , const void *b ) { return *(char *)a - *(int *)b; } qsort(word,100,sizeof(word[0]),cmp); 三、对double类型数组排序(特别要注意...
man qsort: #include stdlib.h> void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *)); 参数说明如下: base: 要排序的数组 nmemb: 数组中的元素数目 sizeof(array)/sizeof(array[0]) size: 每个数组元素占用内存空间,可使用sizeof(array[0])获得 compar: 比较两个数组元素的比较函数。本比较函数的第一个参数值小于、等于、大于第二参数值时,本比较函数的返回...
1. gcc version 4.1.2 2. 部分源码: int compare_name( dir_ const *a, dir_ const *b) { return strcmp(a->name, b->name); } int sort_dirs(dir_ *dirs, int dir_index) { qsort(dirs,dir_index,sizeof(dir_),compare_name); return 0; } 3. 编译时: gcc -c -Wall -O2 -fPIC -I../include -o ../src/log/rollover.o ../src/log/rollover.c ../src/log/rollover.c: In function...
C版第一个问题: 如何对一维指针数组排序? 问题很简单,我要对一个一维数组排序,用标准库的qsort函数,但现在有个问题,我的一维数组内存放的不是真正的数据,而是数据的指针,我的排序函数却已经写好了,是对数据进行排序的,不能改动,如何利用原有的函数对存放指针的一维数组排序? [ 本帖最后由 newbuding 于 2008-5-31 17:07 编辑 ]
环境:suse 10 ia-64
glibc rpm版本:2.4-31.30
测试代码
#include