1004. 成绩排名 (20) (快速排序qsort函数的使用问题)
读入n名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。
输入格式:每个测试输入包含1个测试用例,格式为
第1行:正整数n
第2行:第1个学生的姓名 学号 成绩
第3行:第2个学生的姓名 学号 成绩
... ... ...
第n+1行:第n个学生的姓名 学号 成绩
其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。
输出格式:对每个测试用例输出2行,第1行是成绩最高学生的姓名和学号,第2行是成绩最低学生的姓名和学号,字符串间有1空格。
输入样例:
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
输出样例:
Mike CS991301
Joe Math990112
解题思路:qsort是C语言自带的快速排序函数,使用qsort速度上会快很多
#include<stdio.h>
#include<stdlib.h> typedef struct Student{
char name[];
char num[];
int score;
}Student;
Student student[]; int cmp( const void *a,const void *b)
{ Student *c=(Student*)a;
Student *d=(Student*)b;
return d->score-c->score; //从大到小排序
// return c->score-d->score; //从小到大排序
} int main()
{
int n,flag;
int i;
scanf("%d",&n);
for( i=; i<n; i++)
scanf("%s %s %d",student[i].name,student[i].num,&student[i].score);
qsort( student,n,sizeof(student[]),cmp);
printf("%s %s\n",student[].name,student[].num);
printf("%s %s\n",student[n-].name,student[n-].num);
return ;
}
以上是题目的解,是结构体的,下面再补充几个算法
对整型进行排序
#include<stdio.h>
#include<stdlib.h> int cmp( const void *a,const void *b)
{ return *(int *)a - *(int *)b; //从小到大排序
} int main()
{
int n;
int i;
int student[];
scanf("%d",&n);
for( i=; i<n; i++)
scanf("%d",&student[i]);
qsort( student,n,sizeof(student[]),cmp);
printf("%d\n",student[]);
printf("%d\n",student[n-]);
return ;
}
对结构体二级排序
struct In
{
int x;
int y;
} s[]; //按照x从小到大排序,当x相等时按照y从大到小排序 int cmp( const void *a, const void *b )
{
struct In *c = (In *)a;
struct In *d = (In *)b;
if(c->x != d->x) return c->x - d->x;
else return d->y - c->y;
} qsort(s,,sizeof(s[]),cmp);
对字符串进行排序
struct In
{
int data;
char str[];
} s[]; //按照结构体中字符串str的字典顺序排序 int cmp ( const void *a, const void *b )
{
return strcmp( (*(In *)a)->str, (*(In *)B)->str );
} qsort(s,,sizeof(s[]),cmp);
对double型进行排序(double型要用三目运算符,不能像int那样直接相减)
double in[]; int cmp( const void *a , const void *b )
{
return *(double *)a > *(double *)b ? : -;
} qsort(in,,sizeof(in[]),cmp);
1004. 成绩排名 (20) (快速排序qsort函数的使用问题)的更多相关文章
- 【PAT】1004. 成绩排名 (20)
1004. 成绩排名 (20) 读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 ...
- PAT乙级 1004. 成绩排名 (20)
1004. 成绩排名 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 读入n名学生的姓名.学号.成绩,分 ...
- PAT-乙级-1004. 成绩排名 (20)
1004. 成绩排名 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 读入n名学生的姓名.学号.成绩,分 ...
- [C++]PAT乙级1004. 成绩排名 (20/20)
/* 1004. 成绩排名 (20) 读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生 ...
- PAT 1004 成绩排名 (20)(代码)
1004 成绩排名 (20)(20 分) 读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为\ 第1行:正整数n 第2行:第1 ...
- PATB 1004 成绩排名 (20)
1004. 成绩排名 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 读入n名学生的姓名.学号.成绩,分 ...
- PAT (Basic Level) Practise (中文)- 1004. 成绩排名 (20)
http://www.patest.cn/contests/pat-b-practise/1004 读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入 ...
- PAT 1004. 成绩排名 (20)
读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生 ...
- PAT 1004. 成绩排名 (20) JAVA
读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生 ...
随机推荐
- TDB 12c : Transportable Database
转 http://oracleinaction.com/12c-transportable-database/
- Selenium2工作原理
Selenium 经历了两个版本,Selenium 1.0 和 Selenium 2.0,本文仅介绍Selenium2的原理,在Selenium 2.0 主推的是WebDriver,Selenium2 ...
- jsp中提示修改成功
修改成功提示 servert包 request.setAttribute("success", "修改失败"); 效果而 function f(){ var n ...
- vue项目中安装cnpm和node_modules
1.安装cnpm的nodejs包管理工具,命令行: npm install -g cnpm --registry=https://registry.npm.taobao.org 2. 每个vue项 ...
- Retrofit2.0动态url遇到的坑
1.今天在升级基于RxJava2+Retrofit+RxCache的网络请求封装这套框架的过程中遇到一个问题,当我使用Post动态传入url时,服务器一直返回http404 ,我的请求地址末端是这样的 ...
- DeltaFish 选题报告总结
选题结果:校园物资流动系统 报告地点:3A101 会议时间:16:00 ~ 18:00 与会人员:软工小组全体成员 请假人员:无 缺席人员:无 报告人:陈志锴 一.报告内容总结 1.产品功能 针对校 ...
- 使用Jenkins进行android项目的自动构建(5)
之前在项目中引入的单元测试使用的是JUnit,可以在构建前进行测试,这里在介绍一下使用Instrumentation 进行单元测试.使用Instrumentation进行测试,比之前多一些步骤,需要把 ...
- MVC学习(一)
http://www.cnblogs.com/QLeelulu/archive/2008/09/30/1302462.html
- C# 获取文件编码
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- 使用Intellij IDEA的Bookmarks
用idea的时候,无意中发现了了一个小功能,叫做BookMark Ctrl+F11按出来的然后去查阅了一下文档,主要功能也就是可以清晰的看到自己标的书签附近的代码,比如我们在第11行按一下F11插入一 ...