\(qsort\)函数原型
void qsort(void *base,size_t nitems,size_t size,int (*compar)(const void *,const void *));
//base - 待排序的数据序列起始地址
//nitems - 数据数列中元素的个数
//size - 每个元素大小,以字节为单位
//compar - 用于回调元素比较函数的函数指针
\(cmp\)函数的函数指针实现
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int comp_int(const void *i1,const void *i2)
{
return (*(int *)i1-*(int *)i2);
}
int comp_str(const void *s1,const void *s2)
{
return (strcmp(*(char **)s1,*(char **)s2));//注意字符串的指针数组访问要使用二重指针
}
int main()
{
int (*cmp)(const void *,const void *);
int i;
int a[]={15,42,93,54,15,66,37,8,81};
char *str[]={"Tom","Mary","Allen","Jane","Suesan","Jimi"};
cmp=comp_int;
qsort(a,sizeof(a)/sizeof(a[0]),sizeof(a[0]),cmp);
for(i=0;i<sizeof(a)/sizeof(a[0]);++i)
printf("%d\t",a[i]);
printf("\n");
cmp=comp_str;
qsort(str,sizeof(str)/sizeof(str[0]),sizeof(str[0]),cmp);
for(i=0;i<sizeof(str)/sizeof(str[0]);++i)
printf("%s\t",str[i]);
return 0;
}