表头文件 #include <stdlib.h>
定义函数 void qsort(void * base,size_t nmemb,size_t size,int ( * compar)(const void *, const void *));
函数说明
参数base指向欲排序的数组开头地址,参数nmemb代表数组中的元素数量,
每一元素的大小则由参数size决定,最后一项参数compar为一函数指针,
这个函数用来判断两个元素间的大小关系,
若传给compar的第一个参数所指的元素数据大于第二个参数所指的元素数据则必须回传大于零的值,
两个元素数据相等则回传0。
比较函数:
int CmpInt(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
}
其中a和b是数组中的两个元素,大小为size。
例如,对整数数组int a[n]排序,则可以:
qsort(a, n, sizeof(int), CmpInt);
如果是结构体数组Test a[n],则可以:
qsort(a, n, sizeof(Test), cmp);
其中,
typedef struct
{
int a;
char b;
char c[8];
double d;
}Test;
比较函数则可以这样写:
int cmp(const void *a, const void *b)
{
// 强制类型转换
Test *m = (Test *)a;
Test *n = (Test *)b;
// 比较
return m->a - n->a;或
return m->b - n->b;或
return strcmp(m->c, n->c);或
return m->d - n->d;
}