博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1004. 成绩排名 (20) (快速排序qsort函数的使用问题)
阅读量:7048 次
发布时间:2019-06-28

本文共 2012 字,大约阅读时间需要 6 分钟。

读入n名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。

输入格式:每个测试输入包含1个测试用例,格式为

第1行:正整数n  第2行:第1个学生的姓名 学号 成绩  第3行:第2个学生的姓名 学号 成绩  ... ... ...  第n+1行:第n个学生的姓名 学号 成绩

其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。

 

输出格式:对每个测试用例输出2行,第1行是成绩最高学生的姓名和学号,第2行是成绩最低学生的姓名和学号,字符串间有1空格。

输入样例:

3Joe Math990112 89Mike CS991301 100Mary EE990830 95

输出样例:

Mike CS991301Joe Math990112

 解题思路:qsort是C语言自带的快速排序函数,使用qsort速度上会快很多

1 #include
2 #include
3 4 typedef struct Student{ 5 char name[11]; 6 char num[11]; 7 int score; 8 }Student; 9 Student student[1001];10 11 int cmp( const void *a,const void *b)12 {13 14 Student *c=(Student*)a;15 Student *d=(Student*)b;16 return d->score-c->score; //从大到小排序17 // return c->score-d->score; //从小到大排序18 }19 20 int main()21 {22 int n,flag;23 int i;24 scanf("%d",&n);25 for( i=0; i

 

以上是题目的解,是结构体的,下面再补充几个算法

对整型进行排序

1 #include
2 #include
3 4 int cmp( const void *a,const void *b) 5 { 6 7 return *(int *)a - *(int *)b; //从小到大排序 8 } 9 10 int main()11 {12 int n;13 int i;14 int student[1001];15 scanf("%d",&n);16 for( i=0; i

 

对结构体二级排序 

 

1 struct In 2 { 3     int x; 4     int y; 5 } s[100]; 6  7 //按照x从小到大排序,当x相等时按照y从大到小排序 8  9 int cmp( const void *a, const void *b )10 {11     struct In *c = (In *)a;12     struct In *d = (In *)b;13     if(c->x != d->x) return c->x - d->x;14     else return d->y - c->y;15 }16 17 qsort(s,100,sizeof(s[0]),cmp);

对字符串进行排序 

1 struct In 2 { 3     int data; 4     char str[100]; 5 } s[100]; 6  7 //按照结构体中字符串str的字典顺序排序 8  9 int cmp ( const void *a, const void *b )10 {11     return strcmp( (*(In *)a)->str, (*(In *)B)->str );12 }13 14 qsort(s,100,sizeof(s[0]),cmp);

 

对double型进行排序(double型要用三目运算符,不能像int那样直接相减)

 

1 double in[100]; 2  3  4 int cmp( const void *a , const void *b ) 5 { 6       return *(double *)a > *(double *)b ? 1 : -1; 7 } 8  9 10 qsort(in,100,sizeof(in[0]),cmp);

 

转载于:https://www.cnblogs.com/yuxiaoba/p/8425769.html

你可能感兴趣的文章
NX签名//NXOpen VB.Net / C# Sign
查看>>
Mac下安装nginx
查看>>
<转>IOS多线程
查看>>
微信服务号、订阅号和企业号的差别(运营和开发两个角度)
查看>>
AOP之AspectJ
查看>>
SHELL里执行HIVE导出文件处理成CSV文件
查看>>
Python菜鸟之路:Django 路由补充1:FBV和CBV - 补充2:url默认参数
查看>>
【转】生活感悟
查看>>
【leetcode】965. Univalued Binary Tree
查看>>
第十五周学习报告
查看>>
tomcat用户设置
查看>>
LINQ实现行列转换
查看>>
PHP最全笔记(五)(值得收藏,不时翻看一下)
查看>>
拦截器与过滤器的区别
查看>>
移动开发知识点收集
查看>>
smarty练习: 设置试题及打印试卷
查看>>
替换子节点时 的注意事项
查看>>
groupinfo
查看>>
Django2.1.3 smtp 邮件 553报警
查看>>
maven 项目打包配置(build节点)
查看>>