结构体排序 C++ 蓝桥杯

news/2025/2/5 7:45:53 标签: 算法, c++, 数据结构, 蓝桥杯

成绩排序

#include<iostream>
#include<algorithm>
using namespace std;
struct stu {
	string name;//名字
	int grade;//成绩
};
stu a[30];
bool cmp(stu l, stu r) {
	if (l.grade != r.grade) return l.grade > r.grade;
	return l.name < r.name;
}
int main() {
	int n; cin >> n;
	for (int i = 1; i <= n; i++) cin >> a[i].name >> a[i].grade;
	sort(a + 1, a + n + 1, cmp);

	for (int i = 1; i <= n; i++) cout << a[i].name << " " << a[i].grade << endl;

	return 0;
}

成绩排序思路:输入n名学生的名字和成绩,所以开结构体类型,学生包含两个属性,姓名和成绩,排序算法在打比赛时常用的是sort(在头文件algorithm下使用)。涉及到自己写的结构体类型时,必须要重写排序规则即代码中的bool cmp(stu l,stu r)函数作为sort的第三个参数。

bool cmp(stu l,stu r)   先是比较成绩,如果成绩不同,返回成绩高的在前。再返回名字字典序小的。

sort(a+1,a+n+1,cmp) ——  a+1:待排序区间的首元素——   a+n+1:待排序区间尾元素后一位——    cmp:比较器,排序规则。

最后输出排好序的数组里的每个元素的名字+空格+对应的成绩+换行。

明明的随机数

#include<iostream>
#include<set>
using namespace std;
int main() {
	set<int>s;//集合-去重+排序
	int n; cin >> n;
	for (int i = 1; i <= n; i++) {
		int x; cin >> x;
		s.insert(x);
	}
	cout << s.size() << endl;
	for (auto i : s) cout << i << " ";
	return 0;
}

明明的随机数方法一

set解决思路:直接用集合,因为本题要对一组数去重,并且排序,从小到大。集合会自动对传入的数进行去重和排序。最后输出集合里的元素个数,换行输出排好了的集合每一个元素。

集合知识点:stl容器之一   ——    standard    template   library  —— 标准模板库

集合头文件:include<set>

集合的创建:set<int>s; ——关键字<集合里元素类型>集合名

向集合里插入元素:s.insert(x)——向集合里插入值x

求集合元素个数:s.size()——直接输出去重排序后的集合元素个数

集合输出不能用下标增强for循环——for(auto i:s)  ——auto  i:s——自动 识别集合s里的每个元素类型,让i去从头到尾遍历每个元素。所以直接输出  i   ,cout<<i<<"  ";

#include<iostream>
using namespace std;
const int N = 1e3 + 10;
int cnt[N];
int main() {
	int n; cin >> n;
	//  计数排序
	for (int i = 1; i <= n; i++) {
		int x; cin >> x;
		cnt[x]++;
	}
	//  统计去重后有多少个元素
	int ans = 0;
	for (int i = 0; i <= 1000; i++) {
		if (cnt[i] != 0) ans++;
	}
	cout << ans << endl;
	//  输出去每个元素(去重)
	for (int i = 0; i <= 1000; i++) {
		if (cnt[i] != 0) cout << i << " ";
	}

	return 0;
}

明明的随机数方法二

计数排序解决思路

①开一个计数数组,大小由所有可能出现的数的最大值决定。循环输入每一个数,将每一个数作为计数数组的下标,每个数出现次数作为这个元素的值。

②循环遍历每一个下标,判断a[i]元素值是否不等于0,不等于0就将ans(记录去重后的总数)++,输出ans及换行

③循环遍历每一个下标,判断a[i]元素值是否不等于0,不等于0就直接输出下标i,cout<<i<<" "

完结!!!⠀՞⸝⸝. .⸝⸝՞˳ഒ


http://www.niftyadmin.cn/n/5842069.html

相关文章

【C++STL标准模板库】二、STL三大组件

文章目录 1、容器2、算法3、迭代器 二、STL三大组件 1、容器 容器&#xff0c;置物之所也。 研究数据的特定排列方式&#xff0c;以利于搜索或排序或其他特殊目的&#xff0c;这一门学科我们称为数据结构。大学信息类相关专业里面&#xff0c;与编程最有直接关系的学科&…

牛客周赛 Round 79

题目目录 A 小红的合数寻找解题思路参考代码 B 小红的小球染色解题思路参考代码 C 小红的二叉树解题思路参考代码 D 小红的“质数”寻找解题思路参考代码 E 小红的好排列解题思路参考代码 F 小红的小球染色期望解题思路参考代码 A 小红的合数寻找 \hspace{15pt} 小红拿到了一个…

2. 【.NET Aspire 从入门到实战】--理论入门与环境搭建--.NET Aspire 概览

在当今快速发展的软件开发领域&#xff0c;构建高效、可靠且易于维护的云原生应用程序已成为开发者和企业的核心需求。.NET Aspire 作为一款专为云原生应用设计的开发框架&#xff0c;旨在简化分布式系统的构建和管理&#xff0c;提供了一整套工具、模板和集成包&#xff0c;帮…

【CSS】什么是响应式设计?响应式设计的基本原理,怎么做

在当今多设备、多屏幕尺寸的时代&#xff0c;网页设计面临着前所未有的挑战。传统的固定布局已无法满足用户在不同设备上浏览网页的需求&#xff0c;响应式设计&#xff08;Responsive Web Design&#xff09;应运而生&#xff0c;成为网页设计的趋势和标准。本文将深入探讨响应…

vim-plug的自动安装与基本使用介绍

vim-plug介绍 Vim-plug 是一个轻量级的 Vim 插件管理器&#xff0c;它允许你轻松地管理 Vim 插件的安装、更新和卸载。相较于其他插件管理器&#xff0c;vim-plug 的优点是简单易用&#xff0c;速度较快&#xff0c;而且支持懒加载插件&#xff08;即按需加载&#xff09; 自动…

第三章-SUSE- Rancher-容器高可用与容灾测试-Rancher-离线helm部署

系列文章目录 第一章-SUSE- Rancher-容器高可用与容灾测试-RKE2-外置Mysql&#xff08;主备集群搭建&#xff09; 第二章-SUSE- Rancher-容器高可用与容灾测试-RKE2-集群搭建&#xff08;外置Mysql&#xff09;-CSDN博客 第三章-SUSE- Rancher-容器高可用与容灾测试-Rancher…

蓝桥杯三国游戏(贪心)

贪心&#xff1a;不是从整体上考虑最优解&#xff0c;而是从局部考虑&#xff0c;类似dp贪心的决策是需要有无后效性的&#xff0c;且局部最优解可以推到整体最优 3 1 2 2 2 3 2 1 0 7 2分析&#xff1a; 本题的意思是选择几个事件&#xff08;可不连续&#xff09;&#xff…

算法与数据结构(括号匹配问题)

思路 从题干可以看出&#xff0c;只要给出的括号对应关系正确&#xff0c;那么就可以返回true,否则返回false。这个题可以使用栈来解决 解题过程 首先从第一个字符开始遍历&#xff0c;如果是括号的左边&#xff08;‘&#xff08;‘&#xff0c;’[‘&#xff0c;’}‘&…