一、对int类型数组排序 intnum[100];intcompare(constvoid*a,constvoid*b) {return*(int*)a - *(int*)b; } 二、对char类型数组排序(同int类型) charword[100];intcompare(constvoid*a,constvoid*b) {return*(char*)a - *(char *)b; } 三、对double类型数组排序 doublearray[100];intcompare(cons...
qsort(a,strlen(a),sizeof(char), compare); printf("%s\n", a); return0; }
数组的compare 一维数组: // 对一维数组按各元素大小,升序排列intCompareIntArray(constvoid*a,constvoid*b){return(*(int*)a)-(*(int*)b);} 二维数组: // 对二维数组以其中某列元素大小为依据,对各行进行排序intCompareIntMatrix(constvoid*a,constvoid*b){// 其中2可以改为任意一列,以其大小作为每行...
(*compare)(const void *, const void *) 指向比较函数的函数指针,指定排序规则。 函数返回值:void 二、compare函数指针 compare指向一个比较两个元素的函数,比较函数的原型如下: intcompare(constvoid*p1,constvoid*p2); 注意两个形参必须是const void *。然后,在compare函数内部将const void * 转换为实际应用...
compare 指向用户提供的例程的指针比较两个数组元素,并返回指定它们关系的值。 备注 qsort 函数实现了一种快速排序算法,对数组中的 number 元素(每个元素大小为 width 字节)进行排序。 参数 base 是指向待排序数组的基项的指针。 qsort 使用已排序的元素覆盖此数组。 qsort 在排序过程中一次或多次调用 compare 例程...
的首地址,10传递的是a[10]数据的个数,Compare传递的是int Compare(const void *elem1, const void *elem2)这个函数的地址,也就是Compare把函数的地址给了qsort,qsort在调用的时候通过Compare的地址来调用的。所以不用给Compare传递参数。整个思想是,函数的地址也可以作为参数,传递给另一个函数。
改动compare函数,以实现对数组进行降序排序: #i nclude <iostream> using namespace std; int compare(void const *a, void const *b) { if((*(int *)a) == (*(int *)b)) return 0; else return (*(int *)a) < (*(int *)b) ? 1 : -1;//改动这里 ...
int comp(const void *a,const void *b) { return ((int *)a)[2]-((int *)b)[2]; // 交换依据,比较某两个元素 } // 以a为起始地址指针,根据compare结果决定起始位置往后sizeof(int)*2这一整块拷贝交换,也即整行交换 qsort(a,1000,sizeof(int)*50,comp); ...
int compare (const void * a, const void * b) { return ( *(int*)b - *(int*)a ); } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. int 数组排序 /* qsort example */ #include#includeint values[] = { 40, 10, 100, 90, 20, 25 }; ...