利用结构体数组实现重排序(详解)

一:要求

输入乱序的 成绩单 包括 姓名和成绩,成绩按照递增顺序 输出,如果遇见成绩相同的

		 按名字的字典序输出。 

示例:

输入

5
w 12
a 12
v 7
c 3
e 9

输出:

c 3
v 7
e 9
a 12
w 12

二:代码实现


#include<bits/stdc++.h>
using namespace std;struct Node {string name;int grate;
};bool cmp(Node node1,Node node2) {if(node1.grate == node2.grate) return node1.name < node2.name; return node1.grate < node2.grate;
}int main() {Node* node = new Node[100];int n;cin >> n;for (int i = 0; i < n; i++) {cin >> node[i].name >> node[i].grate;}sort(node,node+n,cmp);for (int i = 0; i < n; i++) {cout << node[i].name << " " << node[i].grate << endl; 	}}

三:知识扩展关于重排序

1:vector的sort方法也可以实现重新排序

(1):bool函数

bool cmp(int a,int b) {return a > b;
}

(2):代码

#include<bits/stdc++.h>
using namespace std;bool cmp(int a,int b) {return a > b;
}int main() {int n;vector<int> v;cin >> n;for (int i = 0; i < n; i++) {int nums;cin >> nums;v.push_back(nums);}sort(v.begin(),v.end(),cmp);for(auto temp : v) {cout << temp << " ";}
}

2:map也可以实现重排序

(1):前言

这里map实现的是对key值得升序遍历,那么我们利用迭代器得逆序遍历不就实现降序处理了吗

(2):核心代码

map<int,int>::reverse_iterator mt;for (mt = m.rbegin(); mt != m.rend(); mt++){//注意遍历的时候是rbegin(),r,end()
}
/**思路:这里实现逆序主要是利用迭代器逆序遍历 */#include<bits/stdc++.h>
using namespace std;int main() {map<int,int> m;map<int,int>::reverse_iterator mt;	int a[5] = {5,4,3,2,1};for(int i = 0; i < 5; i++) {m[a[i]] = i;}for (mt = m.rbegin(); mt != m.rend(); mt++) {cout << mt->first << " " << mt->second << endl;}} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/307496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Azure Functions玩转Serverless

Serverless&Azure Functions通过无服务器计算&#xff0c;开发者无需管理基础结构&#xff0c;从而可以更快构建应用程序。通过无服务器应用程序&#xff0c;将由云服务提供商自动预配、缩放和管理运行代码所需的基础结构。要理解无服务器计算的定义&#xff0c;注意到服务…

java并发之初识

一:并发编程的难点 1:原子性问题 操作系统做任务切换,可以发生在任何一条CPU指令执行完成后&#xff1b;CPU能保证的原子操作是指令级别的&#xff0c;而不是高级语言的操作符&#xff1b; n不是原子操作的&#xff0c;而是3条指令 2:可见性问题 可见性是指一个线程对一个…

Dotnet Core IHttpClientFactory深度研究

今天&#xff0c;我们深度研究一下IHttpClientFactory。一、前言最早&#xff0c;我们是在Dotnet Framework中接触到HttpClient。HttpClient给我们提供了与HTTP交互的基本方式。但这个HttpClient在大量频繁使用时&#xff0c;也会给我们抛出两个大坑&#xff1a;一方面&#xf…

java并发之synchronized实现原理及其优化

1:synchronnized概述 synchronized修饰的方法或代码块相当于并发中的临界区&#xff0c;即在同一时刻jvm只允许一个线程进入执行。synchronized是通过锁机制实现同一时刻只允许一个线程来访问共享资源的。另外synchronized锁机制还可以保证线程并发运行的原子性&#xff0c;有…

.NET 是信息技术应用创新产业重要参与者

今天是国庆节&#xff0c;也是中秋节&#xff0c;月满中秋&#xff0c;举国欢庆&#xff0c;在这里祝各位开发者中秋国庆快乐。放假在家就想把这几年对于.NET发展相关生态做个梳理&#xff0c;写一篇文章来总结一下这两年从腾讯出来自己创业&#xff0c;推动.NET在国内的应用的…

蓝桥杯- 包子凑数

一:题目 题目描述 小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有 NN 种蒸笼&#xff0c;其中第 ii 种蒸笼恰好能放 A_iA i ​ 个包子。每种蒸笼都有非常多笼&#xff0c;可以认为是无限笼。 每当有顾客想买 XX 个包子&#xff0c;卖包子的大叔就会迅速选出若…

秋天 | 等疫情过后,我们继续背起相机去旅行

这是头哥侃码的第218篇原创2020年&#xff0c;注定是不平凡的一年。八个月前&#xff0c;我正和家人一起沉浸在春节的喜悦中&#xff0c;可没成想一场疫情的到来彻底改变了欢快的气氛。别的倒没什么&#xff0c;只是之前所有的计划全部被打乱了。先说春节假期&#xff0c;和舅舅…

简单理解CAP-BASE

1、CAPCAP是分布式系统的指导理论&#xff0c;是NoSQL数据库的理论基石。CAP其实就是对分布式系统的特性总结&#xff0c;即一致性&#xff08;Consistency&#xff09;、可用性&#xff08;Availability&#xff09;、分区容错性&#xff08;Partition tolerance&#xff09;。…

面试必问系列之在浏览器中输入URL后到网页显示 其间发生了什么?

文章目录[TOC](文章目录)1:解析URL网址,从而生成发送给Web服务器的Http请求信息2:真实地址查询-----(DNS域名解析)3:调用协议栈4:可靠的传输 TCP5:远程定位--IP地址6:两点传输--获取MAC地址7:网卡--出口8:送别者--交换机9:出境大门--路由器10:相互扒皮--服务端与客户端1:解析UR…

C# 中的 is 真的是越来越强大,越来越语义化

一&#xff1a;背景 1. 讲故事最近发现 C#7 之后的 is 是越来越看不懂了&#xff0c;乍一看花里胡哨的&#xff0c;不过当我静下心来仔细研读&#xff0c;发现这 is 是越来越短小精悍&#xff0c;而且还特别语义化&#xff0c;那怎是一个爽字了得????&#xff0c;这一篇就和…

leetcode209. 长度最小的子数组(滑动窗口)

一:题目 二:上码 class Solution { public:/**思路:1.滑动窗口解法1>:确定窗口内是什么2>:确定窗口的起始位置3>:确定窗口的终止位置2.窗口:也就是我们的求的连续字符串的和3.窗口的起始位置: 窗口的起始位置最先是我们数组的起始位置,当窗口内连续数组的和大于targe…

开源特训营 - Lesson 4 - 如何运营社区

编辑&#xff1a;李明康责编&#xff1a;袁睿斌作者&#xff1a;课程助教 - 苏斌主讲教师&#xff1a;庄表伟&#xff08;开源社理事长&#xff09;、赵生宇&#xff08;同济大学&#xff09;本次课程的主题为《如何运营社区》&#xff0c;主讲者为开源社的理事长庄表伟老师和来…

leetcode904. 水果成篮(滑动窗口)

一:题目 二:上码 class Solution { public:/**思路:滑动窗口1.滑动窗口为我们 两个品种水果的个数2.滑动窗口的起始位置为数组的起始位置,当遇见一个新的水果种类的时候,这时候就需要移动我们的起始位置这里移动起始位置是要注意的,我们需要移动起始到我们的窗口中 完全没有 这…

拥抱.NET 5,从自研微服务框架开始

“ 2016年发布了.NET Core第一个正式版本&#xff0c;而.NET5也将在下个月就正式来临了&#xff0c;技术日新月异&#xff0c;也有点让人应接不暇。在框架设计上&#xff0c;.NET Framework的全家桶理念&#xff0c;培养了一大批的CRUD&#xff0c;而.NET Core转变成了按需使用…

leetcode周赛第一题6037. 按奇偶性交换后的最大数字(冒泡法)

一:题目 二:上码 class Solution { public:int largestInteger(int num) {string str to_string(num);for (int i 0; i < str.size()-1; i) {for (int j i1; j < str.size(); j) {int num1 str[j]-0;int num2 str[i]-0;if (num1%2 num2%2) {//这里我们控制的是奇数…

从零开始打造专属钉钉机器人

一、前言废话不多的实现简单的钉钉机器人。我们分为下面几个步骤来逐步讲解。1.钉钉机器人的类型2.如何打造一个最最简单的钉钉机器人二、钉钉机器人的类型常用的钉钉机器人有两种&#xff0c;1、通知类型的机器人&#xff1a;适合在群内进行一些通知&#xff0c;推荐消息等内容…

Azure 内容审查器之文本审查

内容审查器Azure 内容审查器也是一项认知服务。它支持对文本、图形、视频进行内容审核。可以过滤出某些不健康的内容&#xff0c;关键词。使你的网站内容符合当地的法律法规&#xff0c;提供更好的用户体验。文本内容审核其中文本内容的审核应用比较广泛。比如在审核游戏中的群…

java并发之CAS

文章目录1:何为CAS2:CAS图示3:CAS和Volatile的关系4:为何CAS效率更高一些5:CAS的特点7:受保护得共享数据类型(1):原子基本数据类型(2):原子引用数据类型7:ABA问题(1):什么是ABA(2):如何解决呢&#xff1f;1:何为CAS CAS(Compare And Swap)&#xff0c;即比较并交换。是解决多线…

八大排序算法之选择排序算法

文章目录一:简单选择排序算法1:思想(1):概念(2):举例验证(3):上码(3):时间复杂度和稳定性二:堆排序1:什么是堆2:堆排序的原理&#xff08;以升序序列为例&#xff09;3:堆排序算法的具体过程(1):先将无序序列建成一个堆(2):调换堆顶元素后,再调整剩下的元素为一个新的堆4:上码(…

快速了解 ASP.NET Core Blazor

最近在几个微信 .NET 交流群里大家讨论比较频繁的话题就是这几天自己的面试经历。面试官&#xff1a;“你刚说你喜欢研究新技术&#xff0c;那你有了解过 Blazor 吗&#xff1f;”作为一位专注于 .NET 开发的软件工程师&#xff0c;你好意思说你对 Blazor 一点也不解吗&#xf…