【九度OJ】1061【快速排序】【C实现】【清华2000】

来源:互联网 发布:crc8校验算法 编辑:程序博客网 时间:2024/05/17 23:06

头一次用stdlib.h中的库函数qsort,还蛮简单的。另外还用了结构体

代码:

/*by qr jobdu 1061 2014-9-13tsinghua 2000  sort*/#include <stdio.h>#include <stdlib.h>  //qsort  是标准库函数#include <string.h>//C结构体typedef struct Student{char name[100];int age;int grade;}Student;int cmp(const void *a,const void *b){ //返回0,认为a和b相等   返回大于0,认为a>b   返回小于0,认为a<bStudent *aa=(Student *)a;Student *bb=(Student *)b;if(aa->grade>bb->grade || (aa->grade==bb->grade && strcmp(aa->name,bb->name)>0) || (aa->grade==bb->grade && strcmp(aa->name,bb->name)==0 && aa->age>bb->age))return 1;else if(aa->grade==bb->grade && strcmp(aa->name,bb->name)==0 && aa->age==bb->age)return 0;return-1;  //直接返回即可}int main(){int n;Student stu[1000];while(scanf("%d",&n)!=EOF){int i;for(i=0;i<n;i++){scanf("%s",&stu[i].name);scanf("%d",&stu[i].age);scanf("%d",&stu[i].grade);}qsort(stu,n,sizeof(stu[0]),cmp);for(i=0;i<n;i++){printf("%s %d %d\n",stu[i].name,stu[i].age,stu[i].grade);}}return 0;}//void qsort ( void * base, size_t num, size_t size, int ( * comparator ) ( const void *, const void * ) );


0 0