qsort函数介绍:
qsort函数stdlib.h文件中,函数原型为
void qsort(void *base,size_t nelem,size_t width,int (*Comp)(const void *,const void *));
*base 为要排序的数组
nelem 为要排序的数组的长度
width 为数组元素的大小(一字节为单位)
默认是从小到大排序的!
(* Comp)(const void *p1,const void *p2) 为判断大小函数的指针,这个函数需要自己定义,如果p1>p2,函数返回-1;a
代码示例:
#include#include#includestruct Stu{ char name[100]; //名字 char xue[100]; //学号 int c; //成绩 }stu[10010];int comp(const void* a,const void* b){ struct Stu *aa = (struct Stu *)a; struct Stu *bb = (struct Stu *)b; return ((aa->c)-(bb->c)); //aa->c为结构体的成员,bb->c也为结构体的成员 }int main(){ int n; int i,j; scanf("%d",&n); getchar(); for(i=0;i { scanf("%s%s%d",&stu[i].name,&stu[i].xue,&stu[i].c); } printf("\n"); qsort(stu,n,sizeof(stu[0]),comp); //参数1:结构体数组名,个数,首地址的字符数,自定义比较函数名 for(i=0;i printf("%s %s %d\n",stu[i].name,stu[i].xue,stu[i].c); return 0;}
详细:
库函数函数原型:void qsort(void *buf, size_t num, size_t size, int ( * compare)( const void *, const void *));函数说明:对buf指向对数据(包含num项,每项的大小为size)进行快速排序。void *buf:无类型指针,如果要排序一个数组,则为指向数组第一个数据的指针;size_t num:要排序的数据的项数,可理解为待排数组的元素个数;size_t size:待排数据每项的大小,以字节Byte为单位;int ( * compare)( const void *, const void *):“函数指针”,用户自定义函数,函数名为compare,const void *:无类型常量指针,可以指向任意类型的数据,但是必须为常量。compare函数规定待排数组的排序规则 :a. 如果函数compare的第一个参数排在第二个前面,返回负值;b. 如果函数compare的第一个参数和第二个位置不要求,返回零值;c. 如果函数compare的第一个参数排在第二个后面,返回正值;