蓝桥杯 使用sort排序(c++)

sort是一个C++已经为我们实现好的工具,当我们要用它时,需要先引入一个算法的库------ < algorithm >。需要说明的是,sort可以排序任何类型的元素,包括我们自己定义的结构体。

我们将需要在C++文件的开始位置加上:

cpp 复制代码
#include <algorithm>

对于下面这段程序

cpp 复制代码
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
	int arr[]={2,4,5,3,1};
	return 0;
}

通过写

cpp 复制代码
sort(arr,arr+5);

我们可以将arr中从开始的元素到第5个元素按从小到大的顺序排列。

而如果我们写:

cpp 复制代码
sort(arr+i,arr+j);

那么被排序的将是arr[i]到arr[j-1],其他元素将保持原位置。

如果希望arr中的元素从大到小排列(或按照某一个规则进行排列),我们可以再为sort传入第三个参数------"排序方法":

cpp 复制代码
sort(arr,arr+5,greater<int>());

其中,greater表示"更大"的意思,表示待排序的数组中的元素类型为int,整个这行代码表示让一个元素类型为整数的数组从大到小排序。

我们的程序会变为:

cpp 复制代码
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
	int arr[]={2,4,5,3,1};
	sort(arr,arr+5,greater<int>());
	return 0;
}

在这里,我们可以看到,我们的程序声明了一个长

度为10的整数型数组,并通过循环从输入中读入10个整数。

接下来因为我们希望使用排序sort,所以请

用#include将< algorithm >库引入:

1 #include < algorithm >

请注意,我们习惯性地将所有引入操作放在程序最开始。在这里,你可以将< algorithm >在引入< iostream >之后一行引入。

cpp 复制代码
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
	int arr[10];
	for(int i=0;i<10;i++){
		cin>>arr[i];
	}
	sort(arr,arr+10);
	for(int i=0;i<10;i++){
		cout<<arr[i]<<" ";
	}
	cout<<endl;
	sort(arr,arr+10,greater<int>());
	for(int i=0;i<10;i++){
		cout<<arr[i]<<" ";
	}
	cout<<endl;
	return 0;
}

算出班上信息学成绩前K名的平均成绩。

编入格式

输入共有三行:

第一行:所在班级的人数N(其中1 ≤ N ≤ 30) ;

第二行:为N个用1个空格隔开的信息学分数(其中分数为700及以内正整数) ;

第三行:老师想计算平均数的尖子生人数K。
输出格式

输出一行共一个实数,为信息学分数前K名同学的分数平均数。四舍五入保留两位小数。
样例输入

cpp 复制代码
10
93 85 77 68 59 100 43 94 75 82
4

样例输出

cpp 复制代码
93.00
cpp 复制代码
#include <iostream>
#include <algorithm>
using namespace std;
int score[35];
int main(){
	int N,k,sum;
	scanf("%d",&N);
	for(int i=0;i<N;i++){
		scanf("%d",&score[i]);
	}
	scanf("%d",&k);
	sort(score,score+N,greater<int>());
	sum=0;
	for(int i=0;i<k;i++){
		sum+=score[i];
	}
	printf("%.2f\n",1.0*sum/k);
	return 0;
}

小红所在的班级进行了数学考试,老师请小红同学帮忙进行名次排序和各分数段的人数统计工作。

现要求如下:将N名同学的考试成绩放在A数组中,各分数段的人数存到数组中:成绩为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个业格为间隔)。
样例输入

cpp 复制代码
10
93 85 77 68 59 100 43 94 75 82

样例输出

cpp 复制代码
100
94
93
85
82
77
75
68
59
43
1 2 2 2 1 2
cpp 复制代码
#include <iostream>
#include <algorithm>
using namespace std;
int score[35];
int B[7];
int main(){
	int N;
	scanf("%d",&N);
	for(int i=0;i<N;i++){
		scanf("%d",&score[i]);
	}
	sort(score,score+N,greater<int>());
	for(int i=0;i<N;i++){
		printf("%d\n",score[i]);
	}
	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++){
		if(i!=6){
			printf("%d ",B[i]);
		}else{
			printf("%d\n",B[i]);
		}
	}
	return 0;
}
相关推荐
Coovally AI模型快速验证1 小时前
农田扫描提速37%!基于检测置信度的无人机“智能抽查”路径规划,Coovally一键加速模型落地
深度学习·算法·yolo·计算机视觉·transformer·无人机
mit6.8241 小时前
[openvela] Hello World :从零开始的完整实践与问题复盘
c++·嵌入式硬件
pusue_the_sun1 小时前
数据结构:二叉树oj练习
c语言·数据结构·算法·二叉树
RaymondZhao342 小时前
【全面推导】策略梯度算法:公式、偏差方差与进化
人工智能·深度学习·算法·机器学习·chatgpt
zhangfeng11332 小时前
DBSCAN算法详解和参数优化,基于密度的空间聚类算法,特别擅长处理不规则形状的聚类和噪声数据
算法·机器学习·聚类
啊阿狸不会拉杆3 小时前
《算法导论》第 32 章 - 字符串匹配
开发语言·c++·算法
小学生的信奥之路3 小时前
洛谷P3817题解:贪心算法解决糖果分配问题
c++·算法·贪心算法
曙曙学编程4 小时前
stm32——GPIO
c语言·c++·stm32·单片机·嵌入式硬件
你知道网上冲浪吗4 小时前
【原创理论】Stochastic Coupled Dyadic System (SCDS):一个用于两性关系动力学建模的随机耦合系统框架
python·算法·数学建模·数值分析
△曉風殘月〆4 小时前
Visual Studio中的常用调试功能(下)
c++·ide·visual studio·调试