成绩排序(给定一些同学的名字和成绩,输出成绩升序或者降序排列)

2024-04-27 02:20

本文主要是介绍成绩排序(给定一些同学的名字和成绩,输出成绩升序或者降序排列),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

方法一:结构体+compare+sort

#include <algorithm>
#include <iostream>
using namespace std;
typedef struct student{//用结构体存储结果string name;int grade;
}Student;//排序算法使用compare+sort
bool compare0(Student a,Student b)//降序
{return a.grade>b.grade;
}bool compare1(Student a, Student b)//升序
{return a.grade<b.grade;
}//falg==0降序
//flag==1升序
int main() {int n,flag;cin>>n>>flag;Student stu[n];for(int i=0;i<n;i++){cin>>stu[i].name>>stu[i].grade;}if(flag==1){stable_sort(stu,stu+n,compare1);}else {stable_sort(stu, stu+n, compare0);}for(int i=0;i<n;i++)//打印成绩单{cout<<stu[i].name<<" "<<stu[i].grade<<endl;}}

方法2:map已经自带了排序

#include<bits/stdc++.h>using namespace std;int main() {int n;int flag;//falg为0 从高到低while (cin >> n >> flag) {map<int, vector<string>> mp;string name;int score;for(int i = 0; i < n; i++){//建立成绩和名字的映射cin >> name;cin >> score;mp[score].push_back(name);}if (flag == 0) {//从高到低for (auto it = mp.rbegin(); it != mp.rend(); ++it) {//逆序遍历for (int i = 0; i < it->second.size(); i++) {//成绩相同时,按照输入顺序输出cout << it->second[i] << " " << it->first << endl;}}} else {//flag==1从低到高for (auto it = mp.begin(); it != mp.end(); ++it) {//顺序遍历for (int i = 0; i < it->second.size(); i++) {//成绩相同时,按照输入顺序输出cout << it->second[i] << " " << it->first << endl;}}}}return 0;
}

方法3:pair

#include <algorithm>
#include <bits/stdc++.h>
using namespace std;bool compare0(pair<string,int>a,pair<string,int>b)//flag==0,从高到低排列,即降序排列
{return a.second>b.second;
}
bool compare1(pair<string,int>a,pair<string,int>b)//flag==1从低到高排列,即升序排列
{return a.second<b.second;
}
int main() {int n;cin>>n;int flag;cin>>flag;vector<pair<string,int>>vec;for(int i=0;i<n;i++){string name;cin>>name;int score;cin>>score;vec.push_back(make_pair(name,score));}if(flag==0) stable_sort(vec.begin(), vec.end(), compare0);else stable_sort(vec.begin(), vec.end(), compare1);for(auto it=vec.begin();it!=vec.end();it++)//it是迭代器{cout<<(*it).first<<" "<<(*it).second<<endl;}return 0;
}

其中,

for(auto it=vec.begin();it!=vec.end();it++)
{cout<<(*it).first<<' '<<(*it).second<<endl;
}等价于下面的写法vector<pair<string,int>> ::iterator it;
for(it = vec.begin(); it != vec.end(); it++)
{cout<<(*it).first<<' '<<(*it).second<<endl;
}

这篇关于成绩排序(给定一些同学的名字和成绩,输出成绩升序或者降序排列)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/939291

相关文章

C++快速排序超详细讲解

《C++快速排序超详细讲解》快速排序是一种高效的排序算法,通过分治法将数组划分为两部分,递归排序,直到整个数组有序,通过代码解析和示例,详细解释了快速排序的工作原理和实现过程,需要的朋友可以参考下... 目录一、快速排序原理二、快速排序标准代码三、代码解析四、使用while循环的快速排序1.代码代码1.由快

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri

使用TomCat,service输出台出现乱码的解决

《使用TomCat,service输出台出现乱码的解决》本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`... 目录使用TomCat,service输出台出现乱码问题1解决方案问题2解决方案总结使用TomCat,

大数据小内存排序问题如何巧妙解决

《大数据小内存排序问题如何巧妙解决》文章介绍了大数据小内存排序的三种方法:数据库排序、分治法和位图法,数据库排序简单但速度慢,对设备要求高;分治法高效但实现复杂;位图法可读性差,但存储空间受限... 目录三种方法:方法概要数据库排序(http://www.chinasem.cn对数据库设备要求较高)分治法(常

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

Python中lambda排序的六种方法

《Python中lambda排序的六种方法》本文主要介绍了Python中使用lambda函数进行排序的六种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录1.对单个变量进行排序2. 对多个变量进行排序3. 降序排列4. 单独降序1.对单个变量进行排序

Python使用Colorama库美化终端输出的操作示例

《Python使用Colorama库美化终端输出的操作示例》在开发命令行工具或调试程序时,我们可能会希望通过颜色来区分重要信息,比如警告、错误、提示等,而Colorama是一个简单易用的Python库... 目录python Colorama 库详解:终端输出美化的神器1. Colorama 是什么?2.