Excel can sort records according to any column. Now you are supposed to imitate this function.

Input Specification:

Each input file contains one test case. For each case, the first line contains two integers N (≤10

​5

​​ ) and C, where N is the number of records and C is the column that you are supposed to sort the records with. Then N lines follow, each contains a record of a student. A student's record consists of his or her distinct ID (a 6-digit number), name (a string with no more than 8 characters without space), and grade (an integer between 0 and 100, inclusive).

Output Specification:

For each test case, output the sorting result in N lines. That is, if C = 1 then the records must be sorted in increasing order according to ID's; if C = 2 then the records must be sorted in non-decreasing order according to names; and if C = 3 then the records must be sorted in non-decreasing order according to grades. If there are several students who have the same name or grade, they must be sorted according to their ID's in increasing order.

Sample Input 1:

3 1

000007 James 85

000010 Amy 90

000001 Zoe 60

Sample Output 1:

000001 Zoe 60

000007 James 85

000010 Amy 90

Sample Input 2:

4 2

000007 James 85

000010 Amy 90

000001 Zoe 60

000002 James 98

Sample Output 2:

000010 Amy 90

000002 James 98

000007 James 85

000001 Zoe 60

Sample Input 3:

4 3

000007 James 85

000010 Amy 90

000001 Zoe 60

000002 James 90

Sample Output 3:

000001 Zoe 60

000007 James 85

000002 James 90

000010 Amy 90

开始技术总结:

  • 主要就是cmp函数的编写,可以通过编写三个cmp函数来分别对应于三种排序的情况,然后根据输入得到的C值来选择哪个cmp函数应用,我使用的是通过定义一个全局变量C,然后编写一个cmp函数,在cmp函数里面区别三种排序情况。注意如果要使用C来判断,必须把C定义为全局变量。这个函数的参考代码如下:
bool cmp(Student a, Student b) {
if (C == 1) {
return a.id < b.id;
}
else if (C == 2) {
if (strcmp(a.name, b.name) == 0) {
return a.id < b.id;
}
else {
return strcmp(a.name, b.name) < 0;
} }
else if (C == 3) {
if (a.grade == b.grade) {
return a.id < b.id;
}
else {
return a.grade < b.grade;
}
}
}

所有部分的代码:

//在VS2017上编写,通过PAT测试满分25
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std; struct Student {
int id;
char name[10];
int grade;
}stu[100010]; int C;//全局变量用来在cmp函数使用,判定排序方式 bool cmp(Student a, Student b) {
if (C == 1) {
return a.id < b.id;
}
else if (C == 2) {
if (strcmp(a.name, b.name) == 0) {
return a.id < b.id;
}
else {
return strcmp(a.name, b.name) < 0;
} }
else if (C == 3) {
if (a.grade == b.grade) {
return a.id < b.id;
}
else {
return a.grade < b.grade;
}
}
}
int main() {
int N;//分别记录人数N
scanf("%d%d", &N, &C);
for (int i = 0; i < N; i++) {
scanf("%d%s%d", &stu[i].id, stu[i].name, &stu[i].grade);
}
sort(stu, stu + N, cmp);
for (int i = 0; i < N; i++) {
printf("%06d %s %d\n", stu[i].id, stu[i].name, stu[i].grade);
} system("pause");
return 0;
}

PATA1028 List Sorting的更多相关文章

  1. HDU Cow Sorting (树状数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2838 Cow Sorting Problem Description Sherlock's N (1  ...

  2. 1306. Sorting Algorithm 2016 12 30

    1306. Sorting Algorithm Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description One of the f ...

  3. 算法:POJ1007 DNA sorting

    这题比较简单,重点应该在如何减少循环次数. package practice; import java.io.BufferedInputStream; import java.util.Map; im ...

  4. U3D sorting layer, sort order, order in layer, layer深入辨析

    1,layer是对游戏中所有物体的分类别划分,如UIlayer, waterlayer, 3DModelLayer, smallAssetsLayer, effectLayer等.将不同类的物体划分到 ...

  5. WebGrid with filtering, paging and sorting 【转】

    WebGrid with filtering, paging and sorting by Jose M. Aguilar on April 24, 2012 in Web Development A ...

  6. ASP.NET MVC WebGrid – Performing true AJAX pagination and sorting 【转】

    ASP.NET MVC WebGrid – Performing true AJAX pagination and sorting FEBRUARY 27, 2012 14 COMMENTS WebG ...

  7. poj 1007:DNA Sorting(水题,字符串逆序数排序)

    DNA Sorting Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 80832   Accepted: 32533 Des ...

  8. ural 1252. Sorting the Tombstones

    1252. Sorting the Tombstones Time limit: 1.0 secondMemory limit: 64 MB There is time to throw stones ...

  9. CF#335 Sorting Railway Cars

    Sorting Railway Cars time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

随机推荐

  1. 使用velero进行kubernetes灾备

    使用velero可以对集群进行备份和恢复,降低集群DR造成的影响.velero的基本原理就是将集群的数据备份到对象存储中,在恢复的时候将数据从对象存储中拉取下来.可以从官方文档查看可接收的对象存储,本 ...

  2. [JAVA] 日常填坑 java.lang.SecurityException: Prohibited package name: java.xxx

    java虚拟机不允许包名以java开头. https://blog.csdn.net/sinat_28690417/article/details/72328547

  3. JS 学习笔记

    在JS中两个对象不能用“==” 或者“===” 来比较,如果硬是要比较的话,始终返回的是false var x = new String("Bill"); var y = new ...

  4. 关于thinkphp3.2.3集成phpmailer

    关于thinkphp3.2.3集成phpmailer 1 我用的是phpmailer5.1的版本  先把文件解压缩放到这个位置 2 封装到函数里面 function email($email,$tit ...

  5. VS.NET(C#)--2.4_aspx默认页面模板代码

    默认模板代码 客户端浏览器将忽视<script>块间任何字符,不在页面输出.通过<%=DataTime.Now.ToString() %>      将服务端代码放中间 < ...

  6. 如何在windows 7 上使用docker

    在window7上面本来是支持使用docker的, 但是我们可以通过安装docker toolbox来实现在windows7上使用docker. 参考网址: https://docs.docker.c ...

  7. Django的视图系统:View

    一.CBV和FBV FBV:functoin based view,基于函数的view 我们之前写过的都是基于函数的view CBV:class based view,基于类的view 定义CBV: ...

  8. Jenkins 显示语言-英文切换中文

    1.进入插件管理 搜索 Locale 插件并进行安装 2.插件安装成功后进入系统设置 3.在 Locale 中 Default Language 字段填入 zh_CN 并且勾选 Ignore brow ...

  9. ELK日志系统之kibana的使用操作

    1.ELK日志系统打开后,打开kibana的操作界面,第一步创建索引模式: 第2步:创建日志索引 第3步:创建成功 第4步:查看30分钟时间段内的日志数据,也可以查今天的,今月的,今年的 放牛去

  10. Alipay 支付宝SDK PHP Fatal error: Class 'LtObjectUtil' not found in。

    在linux 上运行报错:PHP Fatal error:  Class 'LtObjectUtil' not found in. 这是因为人家用的lotusphp框架,和你正在使用的框架冲突了!比如 ...