qsort函数是C语言编辑器自带的排序函数。
例如:按照学生的平均分从小到大,对结构体排序
#include<stdio.h> #include<stdlib.h> struct Student{ long num; int score[5]; float average; }; int comp(const void *p1,const void *p2) { return (*(struct Student*)p1).average>(*(struct Student*)p2).average?1:-1; } int main() { struct Student stud[10]; srand((unsigned int)time(NULL)); for(int i=0;i<10;i++)//生成分数 { stud[i].average=0; for(int j=0;j<5;j++) { stud[i].score[j]=rand()%(100-60+1)+60; stud[i].average+=stud[i].score[j]; } stud[i].average/=5; } for(int i=0;i<10;i++)//生成学号 stud[i].num=19020001+i; for(int i=0;i<10;i++)//排序前 { printf("%ld:",stud[i].num); for(int j=0;j<5;j++) { printf("%d ",stud[i].score[j]); } printf("%.2f ",stud[i].average); putchar(10); } qsort(stud,10,sizeof(stud[0]),comp); putchar(10); for(int i=0;i<10;i++)//排序后 { printf("%ld:",stud[i].num); for(int j=0;j<5;j++) { printf("%d ",stud[i].score[j]); } printf("%.2f ",stud[i].average); putchar(10); } return 0; }
comp函数
int comp(const void *p1,const void *p2) { return (*(struct Student*)p1).average>(*(struct Student*)p2).average?1:-1; } qsort(stud,10,sizeof(stud[0]),comp);
运行结果