C++实现多级排序
实现功能:期末开始4位同学的成绩,按多级排序,排序规则为:按数学从小到大,如果数学相等,则按语文从大到小排列,如果语文相等,则按英语从小到大排列,如果英语相等,则按历史从大到小排烈
#include "stdafx.h"
#include
#include
#include
typedef struct stu
{
char name[];
int math;//数学
int chinese;//语文
int english;//英语
int history;//历史
}Student;
//按照你想排序的方法排序
bool cmp(stu l, stu r)
{
if (l.math < r.math)//数学从小到大
{
return true;
}
else if (l.math == r.math)//如果数学相等
{
if (l.chinese > r.chinese)//按语文从大到小
{
return true;
}
else if (l.chinese == r.chinese)//如果语文相等
{
if (l.english < r.english)//按英语从小到大
{
return true;
}
else if (l.english == r.chinese)//如果英语相等
{
if (l.history > r.history)//按历史从大到小
{
return true;
}
else if (l.history == r.history)
{
return false;
}
}
}
}
return false;
}
using namespace std;
// 小明 73, 80, 86, 79
//小花 77, 78, 60, 90
// 小刚 73, 79, 90, 90
// 小白 77, 78, 40, 89
//排序后
// 小明 73, 80, 86, 79
// 小刚 73, 79, 90, 90
// 小白 77, 78, 40, 89
//小花 77, 78, 60, 90
Student students[] = { { "小明", , , , }
, { "小花", , , , }
, { "小刚", , , , }
, { "小白", , , , } };
int _tmain(int argc, _TCHAR* argv[])
{
cout << "排序前:===========================================" << endl;
for (Student s : students)
{
cout << s.name << ""
<< s.math << ""
<< s.chinese << ""
<< s.english << ""
<< s.history << endl;
}
sort(students, students + , cmp);
cout << "排序后:===========================================" << endl;
for (Student s : students)
{
cout << s.name << ""
<< s.math << ""
<< s.chinese << ""
<< s.english << ""
<< s.history << endl;
}
getchar();
return ;
}
效果如:
C++实现多级排序的更多相关文章
- python自学笔记(七)排序与多级排序
一.sorted内置方法 a = [1,2,3,4] 从大到小(翻转) a = sorted(a,reverse = True) #生成新对象,不会原地修改,需要重新赋值 print a --> ...
- Python中使用operator模块实现对象的多级排序
Python中使用operator模块实现对象的多级排序 今天碰到一个小的排序问题,需要按嵌套对象的多个属性来排序,于是发现了Python里的operator模块和sorted函数组合可以实现这个功能 ...
- python list 嵌套 dict 按照字典中的单个key进行单级排序 或 按照多个键进行多级排序
student = [{"no": 1,"score": 90},{"no": 2,"score": 90},{&quo ...
- 用 Python 排序数据的多种方法
用 Python 排序数据的多种方法 目录 [Python HOWTOs系列]排序 Python 列表有内置就地排序的方法 list.sort(),此外还有一个内置的 sorted() 函数将一个可迭 ...
- Python的列表排序
Python的列表排序 本文为转载,源地址为:http://blog.csdn.net/horin153/article/details/7076321 在 Python 中, 当需要对一个 list ...
- python几个排序函数 sort sorted argsort
Python中排序常用到的sort .sorted和argsort函数 [摘要:Python中sort 战 sorted函数 一 .先容 sort函数是list列表中的函数,而 sorted能够对li ...
- ElasticSearch(7)-排序
引用自ElaticSearch权威指南 一.排序 相关性排序 默认情况下,结果集会按照相关性进行排序 -- 相关性越高,排名越靠前. 这一章我们会讲述相关性是什么以及它是如何计算的. 在此之前,我们先 ...
- mysql常用基础操作语法(六)--对数据排序和限制结果数量的条件查询【命令行模式】
1.使用order by对查询的结果进行排序,asc升序,desc降序: 也可以在order by后指定多个字段名和排序方式进行多级排序: 2.使用limit限制查询结果的数量: 上图中的0,代表查询 ...
- .Net中集合排序还可以这么玩
背景: public class StockQuantity { public StockQuantity(string status, DateTime dateTime, int quantity ...
随机推荐
- 服务器、IP地址和域名之间有什么关系?
一.服务器 服务器其实就像我们的家用电脑一样,也有主板.CPU.内存.硬盘.电源等,但是由于它们处理问题的不同,服务器更像一台加强的家用电脑,服务器是为展网络业务而存放.处理数据的,所以服务器一般是存 ...
- 升级android studio 3.4需要注意n事项
1.在AS版本升级前建议关闭AS代理,以及关闭本地的一些代理工具,不然点击更新的时候会提示Connection failed (Read timed out). Please check networ ...
- Navicat Premium 12.1.12.0安装与激活
转载自:Navicat Premium 12.1.12.0安装与激活 作者:丿记忆灬永殇丨 链接:https://www.jianshu.com/p/5f693b4c9468 navicat12112 ...
- Sublime Text3 & MinGW & LLVM CLang 安装配置C-C++编译环境
Sublime Text是一款强大的跨平台代码编辑器,小巧而且丰富实用的功能是Visual Studio不能比拟的,但是编译运行是一个软肋,本文通过在sublime中配置g++编译器实现程序的编译功能 ...
- Android- APP 秒开
Android- APP 秒开 1. 启动APP 时白屏或者黑屏 现象:当启动APP 时,会有一个白屏或者黑屏一闪而过,然后才会显示出主界面. 这是因为,我们新打开一个应用,系统会为这个应用创建一个进 ...
- WinCC OA基本概念
WinCC OA 是一个模块化软件架构的系统.所需的功能由不同任务创建的特定单元处理.在WinCC OA中,这些单元称为管理器 - 管理器是软件自身的一些独立的处理过程. 图:WinCC OA系统由功 ...
- linux 安装mysql5.7版本
首先准备好mysql5.7.17的安装包,安装包放在 /data/software 目录下 进入到 /usr/local 目录下,解压mysql安装包 命令: cd /usr/local tar ...
- APIO2018 被屠记
占坑 day0 10:40才起床 感觉一点也不好 下午去了趟80中拿牌子然而没有到,白浪费我颓废时间. day0.5 早上第一课讲二分凸优化,有点瞌睡 第二课讲匹配相关,感觉这篇文章涵盖了大部分内容 ...
- 巨坑npm run dev 报错 终于找到正确答案 Error: EPERM: operation not permitted, open '/data/public/build/css/add.p
Windows10环境 npm run dev 报错 终于找到正确答案 Error: EPERM: operation not permitted, open '/data/public/build ...
- Js 运行机制和Event Loop
一.为什么JavaScript是单线程? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事.那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊. Java ...

