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. Scratch 3.6环境搭建(万江波实战记录)

    1.Scratch官网在线环境 官方网址:scratch.mit.edu 进入后,点击“Create”建立 2. Scratch官网在线环境_简体中文(点击这个地球) 3-选择:创意 4-进入”创意“ ...

  2. Springboot2+SpringSecurity+Oauth2+Mysql数据库实现持久化客户端数据

    目录 介绍 建表,初始化数据 工程配置 Authorization Server - Spring Security配置 Authorization Server - 授权服务器 Resource S ...

  3. python实现AES加密

    pip install pycryptodomex 需要安装pycryptodomex模块 aes加密 from Cryptodome.Cipher import AES from binascii ...

  4. Python数据库添加时间

    利用pymysql往数据库中添加时间字段的方法: 1.导入datetime和pymysql:安装:pip install pymysql, datetime是内置 2.写入SQL语句:向对应的字段中间 ...

  5. 基于JDK1.8,Java容器源码分析

    容器源码分析 如果没有特别说明,以下源码分析基于 JDK 1.8. 在 IDEA 中 double shift 调出 Search EveryWhere,查找源码文件,找到之后就可以阅读源码. Lis ...

  6. springmvc4 mybatis 整合 框架源码 bootstrap html5 mysql oracle sqlsever spring SSM

    A 调用摄像头拍照,自定义裁剪编辑头像 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统]B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单;  技 ...

  7. MySql5.7配置文件my.ini 设置 my.ini文件路径

    mysql配置文件my-default.ini  my.ini修改后重启无效,原来是路径错了,记录一下: windows操作系统下: 1. 由于我们使用MySql 时,需要修改mysql 的 my.i ...

  8. Kotlin开发springboot项目(三)

    Kotlin开发springboot项目(三) 在线工具 https://www.sojson.com IDEA中Kotlin生成可执行文件1,项目使用Gradle构建2,在model的build.g ...

  9. Zabbix 添加内存告警

    1.在Template OS Linux模板创建item Configuration-->Templates-->Template OS Linux-->items-->cre ...

  10. 修改GIT已提交的用户名和邮箱

    修改GIT已提交的用户名和邮箱 原文:https://help.github.com/en/github/using-git/changing-author-info 说明 要更改在现有提交中记录的名 ...