C++实现多级排序

stl中sort详细说明

实现功能:期末开始4位同学的成绩,按多级排序,排序规则为:按数学从小到大,如果数学相等,则按语文从大到小排列,如果语文相等,则按英语从小到大排列,如果英语相等,则按历史从大到小排烈

  1 #include "stdafx.h"
  2
  3 #include
  4
  5 #include
  6
  7 #include
  8
  9 typedef struct stu
 10
 11 {
 12
 13     char name[24];
 14
 15     int math;//数学
 16
 17     int chinese;//语文
 18
 19     int english;//英语
 20
 21     int history;//历史
 22
 23 }Student;
 24
 25 //按照你想排序的方法排序
 26
 27 bool cmp(stu l, stu r)
 28
 29 {
 30
 31     if (l.math < r.math)//数学从小到大
 32
 33     {
 34
 35         return true;
 36
 37     }
 38
 39     else if (l.math == r.math)//如果数学相等
 40
 41     {
 42
 43         if (l.chinese > r.chinese)//按语文从大到小
 44
 45         {
 46
 47             return true;
 48
 49         }
 50
 51         else if (l.chinese == r.chinese)//如果语文相等
 52
 53         {
 54
 55             if (l.english < r.english)//按英语从小到大
 56
 57             {
 58
 59                 return true;
 60
 61             }
 62
 63             else if (l.english == r.chinese)//如果英语相等
 64
 65             {
 66
 67                 if (l.history > r.history)//按历史从大到小
 68
 69                 {
 70
 71                     return true;
 72
 73                 }
 74
 75                 else if (l.history == r.history)
 76
 77                 {
 78
 79                     return false;
 80
 81                 }
 82
 83             }
 84
 85         }
 86
 87     }
 88
 89     return false;
 90
 91 }
 92
 93 using namespace std;
 94
 95 //  小明 73, 80, 86, 79
 96
 97 //小花 77, 78, 60, 90
 98
 99 //  小刚 73, 79, 90, 90
100
101 //  小白 77, 78, 40, 89
102
103 //排序后
104
105 //  小明 73, 80, 86, 79
106
107 //  小刚 73, 79, 90, 90
108
109 //  小白 77, 78, 40, 89
110
111 //小花 77, 78, 60, 90
112
113 Student students[4] = { { "小明", 73, 80, 86, 79 }
114
115 , { "小花", 77, 78, 60, 90 }
116
117 , { "小刚", 73, 79, 90, 90 }
118
119 , { "小白", 77, 78, 40, 89 } };
120
121 int _tmain(int argc, _TCHAR* argv[])
122
123 {
124
125     cout << "排序前:===========================================" << endl;
126
127     for (Student s : students)
128
129     {
130
131         cout << s.name << ""
132
133             << s.math << ""
134
135             << s.chinese << ""
136
137             << s.english << ""
138
139             << s.history << endl;
140
141     }
142
143     sort(students, students + 4, cmp);
144
145     cout << "排序后:===========================================" << endl;
146
147     for (Student s : students)
148
149     {
150
151         cout << s.name << ""
152
153             << s.math << ""
154
155             << s.chinese << ""
156
157             << s.english << ""
158
159             << s.history << endl;
160
161     }
162
163     getchar();
164
165     return 0;
166
167 }

效果如:

多级排序

时间: 2024-10-25 16:12:09

C++实现多级排序的相关文章

python自学笔记(七)排序与多级排序

一.sorted内置方法 a = [1,2,3,4] 从大到小(翻转) a = sorted(a,reverse = True) #生成新对象,不会原地修改,需要重新赋值 print a -->[5,4,3,2,1] 二.list sort 方法 a.sort(reverse = True) #原地修改,不需要重新赋值 a = ["323","43233","2342"] a.sort(key = int) #整型排序 print a--&

阿里笔试编程题——根据商品编号排序(多级排序)

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #e4af0a; min-height: 14.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; f

CodeForces 12D Ball 多级排序 + 离散 + 线段树

给出B,I,R,对于Pi,若存在Pj满足 Bi < Bj && Ii < Ij && Ri < Rj ,则称Pi为 probable self-murderers.问存在多少个Pi. 首先对其升序排序,优先级为B > I > R. 然后发现对于i < j ,必有Bi <= Bj,所以这一层基本可以忽略. 然后由于数据范围较大,对 I 进行离散,建立线段树记录大于I的区间内最大的R是多少,当然此时要从后往前扫描,边更新边计数. #in

Python 多级排序

class C( object ): def __init__( self, x1, x2, x3 ): self.x1 = x1 self.x2 = x2 self.x3 = x3 def __cmp__( self, other ): if self.x1 < other.x1: return -1 elif self.x1 == other.x1: if self.x2 < other.x2: return -1 elif self.x2 == other.x2: if self.x3

ElasticSearch(7)-排序

引用自ElaticSearch权威指南 一.排序 相关性排序 默认情况下,结果集会按照相关性进行排序 -- 相关性越高,排名越靠前. 这一章我们会讲述相关性是什么以及它是如何计算的. 在此之前,我们先看一下sort参数的使用方法. 排序方式 为了使结果可以按照相关性进行排序,我们需要一个相关性的值.在ElasticSearch的查询结果中, 相关性分值会用_score字段来给出一个浮点型的数值,所以默认情况下,结果集以_score进行倒序排列. 有时,即便如此,你还是没有一个有意义的相关性分值.

mysql常用基础操作语法(六)--对数据排序和限制结果数量的条件查询【命令行模式】

1.使用order by对查询的结果进行排序,asc升序,desc降序: 也可以在order by后指定多个字段名和排序方式进行多级排序: 2.使用limit限制查询结果的数量: 上图中的0,代表查询的开始位置,也可以理解为跳过的数量:上图中的2代表需要查询出的数量.这个表中有3条数据,因为限制了条数为2,因此实际结果只是两条.另外,这里的初始位置是0,实际上可以不写,默认就是0: 这里还有一种情况,就是指定查询结果的数量可能大于表中的实际数量,这个时候返回结果会返回表中所有符合条件的数据,例如

用 Python 排序数据的多种方法

用 Python 排序数据的多种方法 目录 [Python HOWTOs系列]排序 Python 列表有内置就地排序的方法 list.sort(),此外还有一个内置的 sorted() 函数将一个可迭代对象(iterable)排序为一个新的有序列表. 本文我们将去探索用 Python 做数据排序的多种方法. 排序基础 简单的升序排序非常容易:只需调用 sorted() 函数,就得到一个有序的新列表: 你也可以使用 list.sort() 方法,此方法为就地排序(并且返回 None 来避免混淆).

python几个排序函数 sort sorted argsort

Python中排序常用到的sort .sorted和argsort函数 [摘要:Python中sort 战 sorted函数 一 .先容 sort函数是list列表中的函数,而 sorted能够对list或iterator举行排序 2.sort战sorted的比拟 1.用sort函数对列表排序时会影响列表自身,而sorted没有会 举例] Python中sort 和 sorted函数    一.介绍 sort函数是list列表中的函数,而sorted可以对list或者iterator进行排序 二

排序与相关性(Sorting and Relevance)

本文翻译自Elasticsearch官方指南的Sorting and Relevance一章的第一节. 原文地址:http://www.elastic.co/guide/en/elasticsearch/guide/current/_sorting.html 排序 ES默认是通过相关度来对结果进行排序的,最相关的文档在最前面.在本章里,我们阐述我们所说的相关性以及它是如何计算的,但是我们先讲解sort参数及其如何使用. 为了根据相关性进行排序,我们需要把相关性表示为一个值.在Elasticsea