蓝桥杯-sort排序(上)

在这里插入图片描述

sort排序

  • 🎈1.算法说明
  • 🎈2.例题
    • 🔭2.1例题一
    • 🔭2.2例题二
    • 🔭2.3例题三
    • 🔭2.4例题四
    • 🔭2.5例题五
    • 🔭2.6例题六

🎈1.算法说明

🔎对于一个数组,通过对数组中的元素进行交换,我们可以将数组中的元素按从大到小的或从小到大的顺序排列。当我们希望对数组中的元素进行排序时,我们可以使用C++为我们提供的工具-sort。当我们使用它时,需要先引入一个算法的库-<algorithm>,需要说明的是,sort可以排序任何类型的数据,包括我们自己定义的结构体。
📖如果我们将从arr中开始的元素到第5个元素按从小到大的顺序排列,那么我们可以写成sort(arr,arr+5).
📝如果希望arr中的元素从大到小排列(或按照某一个规则进行排列),我们可以再为sort传入第三个参数-“排列方法”:sort(arr,arr+5,greater<int>())

🎈2.例题

🔭2.1例题一

🔎问题:给定一个长度为N的数组A,请你先从小到大输出它的每个元素,再从大到小输出它的每个元素。输入描述:第一行包含一个整数N,第二行包含N个整数a1,a2,a3,a4…an,表示数组A的元素。输出描述:输出共两行,每行包括N个整数。

📖算法

#include <iostream>
#include <algorithm>
using namespace std;
int arr[500000];
void sort1(int n)
{for (int i = 0; i < n; i++){cin >> arr[i];}sort(arr, arr + n);for (int i = 0; i < n; i++){cout << arr[i] << " ";}cout << endl;sort(arr, arr + n, greater<int>());for (int i = 0; i < n; i++){cout << arr[i] << " ";}cout << endl;
}
int main()
{int n;cin >> n;sort1(n);return 0;
}

在这里插入图片描述

🔭2.2例题二

🔎问题:给定一个长度为n的数组a,给定一个长度为m的互不相同的数组p,意味着你可以交换a[pi]a[pi+1]任意次。请确定是否可以用仅允许的交换方式使得a数组非降序。输入描述:第一行输入一个nm。第二行输入n个整数a1,a2,a3,a4...an.第三行输入m个整数p1,p2,p3..pm.(1<=m<n<=1000).输出描述:如果可以输出YES,否则输出NO.

📖算法

#include <iostream>
#include <vector>
using namespace std;
int main() {int n, m;cin >> n >> m;vector<int> a(n + 1);//定义一个长度为 n 的数组vector<int> p(m + 1, 0);// 定义一个长度为 m 全是 0 的数组for (int i = 1; i <= n; i++)cin >> a[i];for (int i = 0; i < m; i++) {int k;cin >> k;if (k <= m)p[k] = 1; //防止k越界 }for (int i = 1; i <= n; i++)for (int j = 2; j <= n; j++)if (a[j - 1] > a[j]) {swap(a[j - 1], a[j]);if (!p[j - 1]) {cout << "NO" << endl;return 0;}}cout << "YES" << endl;return 0;
}

🔭2.3例题三

🔎问题:小明的老师希望知道班上的信息学尖子生的水平如何。老师请小明同学帮忙算出班上信息学成绩靠前K名的平均成绩。第一行:为小明所在班级的人数N(其中1<=N<=30),第二行:为N个用1个空格隔开的信息学分数(其中分数为100以以内正整数),第三行:老师想计算平均数的尖子生人数K。输出格式:输出一行共一个实数,为信息学分数前K名同学的分数平均分,四舍五入保留两位小数

#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
int score[35];
int main()
{int N, K;cin >> N;for (int i = 0; i < N; i++){cin >> score[i];}sort(score, score + N, greater<int>());cin >> K;float sum = 0.0;for (int i = 0; i < K; i++){sum += score[i];}cout << setiosflags(ios::fixed) << setprecision(2) << sum / K << endl;//保留两位有效数字return 0;
}

在这里插入图片描述

🔭2.4例题四

🔎问题:小红所在的班级进行了数学考试,老师请小红同学帮忙进行名次排序和各分数段的人数统计工作。现要求如下:将N名同学的考试成绩放在A数组中,各分数段的人数存到B数组中:成绩为100的人数存到B[1]中,成绩为90-99的人数存到B[2]中,成绩为80-89的人数存到B[3]中,成绩为70-79的人数存到B[4]中,成绩为60-69的人数存到B[5]中,成绩为60分以下的存到B[6]中。输入格式:第一行为小红所在班级的人数N(其中1<=N<=30),第二行为N个用1个空格隔开的数学分数(其中分数为100以内的正整数)。输出格式:前N行:每行一个整数是从高到低排序的数学分数。最后一行:是6个按要求,存放到数组B[1]到B[6]中各分数段的人数(各数据之间以1个空格为间隔)。

#include <iostream>
#include <algorithm>
using namespace std;
int score[30];
int B[7] = { 0 };
int main()
{int n;cin >> n;for (int i = 0; i < n; i++){cin >> score[i];}sort(score, score + n, greater<int>());for (int i = 0; i < n; i++){cout << score[i] << endl;}for (int i = 0; i < n; i++){if (score[i] == 100)B[1]++;else if (score[i] >= 90)B[2]++;else if (score[i] >= 80)B[3]++;else if (score[i] >= 70)B[4]++;else if (score[i] >= 60)B[5]++;else B[6]++;}for (int i = 1; i <= 6; i++){cout << B[i] << " ";}cout << endl;return 0;
}

在这里插入图片描述

🔭2.5例题五

📝在上面的学习中,我们都是采用sort(score, score + n, greater<int>());来进行降序的排序,那么是否有能用适用更广泛排序的算法呢?这里我们引入了sort()函数的第三个参数,即排序方法。这里我们同样的对10个整数进行从大到小的排序,看看还有什么样的写法?

#include <iostream>
#include <algorithm>
using namespace std;
int a[10000];
bool cmp(int x, int y) //如果x真的大于y,那么x在前面,否则y在前面
{return x > y;
}
int main()
{int n;cin >> n;for (int i = 0; i < n; i++){cin >> a[i];}sort(a, a + n, cmp);for (int i = 0; i < n; i++){cout << a[i] << " ";}cout << endl;return 0;
}

在这里插入图片描述

🔭2.6例题六

🔎问题:我们有N个正整数,均小于10000.现在需要将这些正整数按照除以3的余数从小到大排序,即除以3余0的数排在除以3余1的数前面,除以3余1的数排在除以3余2的数前面。如果余数相等,则按照正整数的值从小到大排序。输入格式:第一行为一个整数N(0<N<101),第二行为用空格隔开的N个正整数,均小于10000。输出格式:输出有一行,为按照题目要求排序后的N个正整数,用空格隔开。

#include <iostream>
#include <algorithm>
using namespace std;
int a[105];
bool cmp(int x, int y) //如果x真的大于y,那么x在前面,否则y在前面
{if (x % 3 != y % 3){return x % 3 < y % 3;}else{return x < y;}
}
int main()
{int n;cin >> n;for (int i = 0; i < n; i++){cin >> a[i];}sort(a, a + n, cmp);for (int i = 0; i < n; i++){cout << a[i] << " ";}cout << endl;return 0;
}

在这里插入图片描述

好啦,关于sort排序的知识到这里就先结束啦,后期会继续更新学习蓝桥杯的相关知识,欢迎大家持续关注、点赞和评论!❤️❤️❤️

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

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

相关文章

Spring Security 存储密码之 JDBC

Spring Security的JdbcDaoImpl实现了UserDetailsService接口,通过使用JDBC提供支持基于用户名和密码的身份验证。 JdbcUserDetailsManager扩展了JdbcDaoImpl,通过UserDetailsManager接口提供UserDetails的管理功能。 当Spring Security配置为接受用户名/密码进行身份验证时,…

南卡Neo2评测:实力诠释骨传导耳机全能旗舰,细节展现匠心之作

前段时间朋友让我帮他寻找一款佩戴舒适、音质体验好的蓝牙耳机&#xff0c;因为比较忙所以一直把这件事搁置了&#xff0c;刚好这两天比较闲&#xff0c;所以也是在综合个人的经验和目前较为热门的一些品牌款式&#xff0c;决定帮他寻找一款骨传导耳机&#xff0c;因为骨传导耳…

JVM-字节码应用

一、字节码的应用远超你的想象 二、ASM介绍与读取字节码实战 用CoreAPI解析和TreeAPI都能做字节码解析&#xff0c;区别&#xff0c;TreeAPI必须读取完整字节码信息&#xff0c;才能做解析。 下面代码&#xff0c;使用CoreAPI做解析&#xff1a; package asm;public class MyM…

[已解决]504 Gateway Time-out 网关超时

文章目录 问题&#xff1a;504 Gateway Time-out 504 Gateway Time-out 网关超时思路解决 问题&#xff1a;504 Gateway Time-out 504 Gateway Time-out 网关超时 思路 网上的常规思路是修改nginx配置文件,增加请求执行时间,试过没有用 keepalive_timeout 600; fastcgi_con…

JVM系列-7内存调优

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术、JVM原理&#x1f525;如果感觉博主的文…

案例分享 | 助力数字化转型:嘉为科技项目管理平台上线

嘉为科技项目管理平台&#xff08;一期&#xff09;基于易趋&#xff08;EasyTrack&#xff09;进行实施&#xff0c;通过近一年的开发及试运行&#xff0c;现已成功交付上线、推广使用&#xff0c;取得了良好的应用效果。 1.关于广州嘉为科技有限公司&#xff08;以下简称嘉为…

龙芯,启动!

本文为小白从购买龙芯3A6000主板、硬件安装、软件安装的简单教程。 1 购买 目前&#xff08;2024年1月&#xff09;最新的龙芯主板采用龙芯处理器3A6000和7A2000桥片设计的DTX主板&#xff0c;CPU主频可达2.5GHz&#xff0c;2个DDR4内存插槽。桥片内部集成GPU&#xff0c;支…

如何把openwrt的ipk软件包安装到ubuntu上

前提&#xff1a;都是arm64的架构的软件包。 下载openwrt的ipk软件包 1. 从https://pkgs.org/ 查找下载软件包&#xff1a; 本文以swconfig软件包为例&#xff0c;下载swconfig和相关的依赖软件包&#xff1a; swconfig_12_aarch64_cortex-a72.ipk libuci20130104_2021-10-2…

podman+centos和docker+alpine中作性能对比遇到的问题及解决

1.dockeralpine中遇到这个问题 这是由于缺少相关的配置和依赖造成的 通过以下命令在alpine中安装相关配置 apk add --no-cache build-base cairo-dev cairo cairo-tools jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev 2.alpine中python找…

C++——IO流

C语言中我们学习过文件IO的相关函数&#xff0c;那么在C中也一定有各种IO流的 函数或者功能&#xff0c;由我今天来简单介绍一下C中IO流的大致原理及使用。在C语言中我们经常会使用到scanf、printf、sscanf、sprintf等等来实现进程和文件之间数据的流动&#xff0c;在C中虽然由…

python黑马模块

1、使用内置模块 # import通过.使用模块内部的全部功能 """ import time print("ff") time. sleep(5) print("as")# 使用from 导入某个功能 from time import sleep print("ff") sleep(5) print("as")# 使用 * 导入全部…

taskflow 源码阅读笔记-1

之前写了一篇介绍Taskflow的短文&#xff1a;传送门 Taskflow做那种有前后依赖关系的任务管理还是不错的&#xff0c;而且他的源码里运用了大量C17的写法&#xff0c;觉得还是非常值得学习的&#xff0c;因此决定看一下他的源码&#xff0c;这里顺便写了一篇代码学习笔记。 概…

Amazon 亚马逊新玩具——在线购物试衣服“虚拟试穿”模型:Diffuse to Choose

这个模型拥有强大的能力&#xff0c;它能够将任何商品无缝地融入任何环境之中&#xff0c;确保商品与环境完美匹配。例如&#xff0c;你可以轻松地将在线商店中的椅子图片放入你客厅照片中&#xff0c;预览它实际摆放的效果。无论环境如何变化&#xff0c;该模型都能确保商品展…

Java复习系列之阶段二:数据库

1. 基础语法 1.1 DQL&#xff08;数据查询语句&#xff09; 执行顺序&#xff1a; from、join 、on、where、group by、having、select、distinct、order by、limit 1.2 DML&#xff08;数据修改语言&#xff09; 对数据表的增删改 insert into update set delete form 1.…

【JavaEE进阶】 #{}和${}

文章目录 &#x1f343;前言&#x1f333;#{}和${}使⽤&#x1f6a9;Interger类型的参数&#xff08;基础数据类型&#xff09;&#x1f388;使用#{}&#x1f388;使用${} &#x1f6a9;String类型的参数使用&#x1f388;#{}使用&#x1f388;${} &#x1f38d;#{}和${}区别&a…

C++:引用

目录 概念&#xff1a; 引用的使用格式&#xff1a; 引用特性&#xff1a; 常引用 使用场景&#xff1a; 1、做参数 二级指针时的取别名 一级指针取别名 一般函数取别名 2、做返回值 函数返回值的原理&#xff1a; 引用的返回值使用&#xff1a; 引用和指针的对比&…

Java Swing桌面项目打包成可执行jar

前言 最近有需求&#xff0c;将Swing项目打包为一个可执行的jar包&#xff0c;遇见了一些问题&#xff0c;参考AI助手&#xff0c;解决了遇到的问题&#xff0c;也有一些亲身实践体会&#xff0c;记录一下。开发环境IntelliJ IDEA&#xff0c;JDK8&#xff0c;用kotlin语言实现…

navicat连接postgresql、人大金仓等数据库报错

navicat连接postgresql、人大金仓数据库报错问题是一个偶现的问题&#xff0c;需要我们特别关注&#xff1a; 1、客户端连接人大金仓数据库 这里注意&#xff1a;navicat连接postgresql、人大金仓数据库时均选择postgresql类型&#xff0c;因为人大金仓数据库底层和psql数据库…

【第五天】蓝桥杯备战

1、金币 https://www.lanqiao.cn/problems/357/learning/ 解法&#xff1a;暴力 import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);//在此输入…

01_Anaconda环境搭建

概述 Anaconda包含了许多常用的科学计算和数据分析的库和工具。通过Anaconda&#xff0c;用户可以更方便地安装、管理和更新这些库和工具&#xff0c;从而提高工作效率。 Anaconda还提供了一个名为conda的包管理器&#xff0c;可以帮助用户方便地安装、管理和更新这些库和工具…