首页 > 编程语言 >C/C++基础之sort排序

C/C++基础之sort排序

时间:2025-01-16 12:28:36浏览次数:3  
标签:sort arr cout int cin C++ vector 排序

sort(起始地址,结束地址的下一位,比较函数) 注:比较函数可写可不写。默认sort函数是升序排序的。使用方法如下:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int a[100];
	int n;    //数组的实际长度 
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);  //取消同步流 
	cin>>n;  //输入n的大小 
	for(int i = 1;i <= n;++i)
		cin >> a[i];		//输入数组a的值  
	sort(a+1,a+n+1);     //范围是[1,n+1),从小到大排序 
	//输出
	for(int i = 1;i <= n;++i)
		cout << a[i] << ' ';
	return 0;
}

那么如何实现降序排序呢?可以通过引入一个比较函数。

#include<bits/stdc++.h>
using namespace std;
bool Compare(const int &u,const int &v){
	return u > v;
}
int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	vector<int> arr = {5,3,7,5,2,9,8,0};
	sort(arr.begin(),arr.end(),Compare);
	for(int i = 0;i < arr.size();++i)
		cout<<arr[i]<<' ';
}

这里简要介绍一下vector

vector是 C++ 标准模板库(STL)中的一个容器类模板,用于存储和管理元素序列。它提供了动态数组的功能,允许存储多个元素,并可以根据需要自动调整大小。vector<int>提供了begin和end迭代器可以方便对vector中的元素进行操作,代码中的sort(arr.begin(),arr.end(),Compare)就用到了。如果想使用数组的话需要使用sort(arr,arr+8,Compare)来调用sort函数,数组的大小需要提前确定,并且不能动态调整大小。

另外sort函数中也可以引入一个lambda(匿名函数),这样可以使代码更加简洁。

#include<bits/stdc++.h>
using namespace std;
const int N = 10;
int a[N];
int main(){
	int n;
	cin>>n;
	for(int i = 0;i < n;i++) cin>>a[i];
	sort(a,a+n);
	for(int i = 0;i < n;i++) cout<<a[i]<<' ';
	cout<<'\n';
	sort(a,a+n,[](const int &u,const int &v){	//引入匿名函数 
		return u > v;
	});
	for(int i = 0;i < n;i++) cout<<a[i]<<' ';
	return 0;
}

标签:sort,arr,cout,int,cin,C++,vector,排序
From: https://blog.csdn.net/2302_80368910/article/details/145157709

相关文章

  • C++基础学习01
    C++基础学习012025-01-1611:29:04星期四首先是函数的结构,具体包括四个部分:返回值类型,函数名,形参列表和函数体接下来是输出输出流和C++标准库。我们要实现一个简单的A+B的输入输出,这里需要用到C++的iostream库,于是我们就需要使用cin和cout分别表示输入输出。然后是关于......
  • 常用阈值分割算法及 C++ 代码分析(二)
    一、概述阈值分割是图像处理中一种基础且重要的技术,它的核心思想是通过设定一个或多个阈值将图像中的像素划分为不同的类别,以实现图像中目标和背景的分离,或者不同目标之间的分离。这种技术广泛应用于物体检测、图像识别、医学影像处理、遥感图像处理等众多领域。在C++环境下......
  • 螺旋折线-第九届蓝桥杯C++B组
    解题:#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;intmain(){ intx,y; cin>>x>>y; if(abs(x)<=y&&y>0){ intn=y; cout<<(LL)(2*n-1)*(2*n)+x-(-n)<<endl; }elseif(abs(y)<=x&&x&......
  • 1.C++基础入门
    C++基础入门1C++初识1.1第一个C++程序编写一个C++程序总共分为4个步骤创建项目创建文件编写代码运行程序1.1.1创建项目​ VisualStudio是我们用来编写C++程序的主要工具,我们先将它打开1.1.2创建文件右键源文件,选择添加->新建项给C++文件起个名称,然后点击添......
  • 每日一题洛谷P5726 【深基4.习9】打分C++
    #include<iostream>#include<iomanip>usingnamespacestd;intmain(){ intn; cin>>n; intstr[1000]={0}; intmax=0; intmin=10; for(inti=0;i<n;i++){ cin>>str[i]; if(str[i]>max){ max=str[i......
  • Codeforces 1536B Prinzessin der Verurteilung 题解 [ 紫 ] [ 后缀自动机 ] [ 动态规
    PrinzessinderVerurteilung:最短未出现字符串的板子。思路考虑在SAM上dp,定义\(dp_i\)表示从\(i\)节点走到NULL节点所花费的最少步数。显然我们建出反图,跑DAG上dp即可。转移如下:\[dp_i=1+\min_{j=1}^{|v_i|}dp_{v_{i,j}}\]输出方案的话记录下每个dp值的先驱,最......
  • C++ 类模板教程
    C++的类模板是泛型编程的核心特性之一,它让我们能够编写适用于多种类型的通用代码,从而提高代码的复用性和扩展性.本教程通过栈的实现为例,深入探讨类模板的实现,使用,以及特化,偏特化,默认参数和类型别名等高级特性,帮助您更全面地掌握这一强大工具.1.实现一个......
  • 贪吃蛇小游戏(c++)
    随手写的,一个十分有趣的贪吃蛇小游戏。用了随机数与二维数组实现。欢迎各位大佬提出修改意见#include<iostream>#include<cstdlib>usingnamespacestd;intx=0,y=0,bx,by,f=0;charmove;charmap[20][20];intbody[20][2];intifb=0;intmain(intargc,constcha......
  • C18.【C++ Cont】OJ测试用例的各种输入情况汇总
    目录1.思维导图2.单组测试用例3.多组测试用例1.测试数据组已知(输入)类模版例题2.测试数据组未知模版3.特殊值结束测试数据模版1.逐个字符处理2.一次读一行例题4.应对空格的处理方法1.一次读一行模板2.一次读一个单词5.应对数字的处理方法两个认知1.呈现在......
  • 【c++】函数调用机制
    【c++】函数调用机制1.建立栈帧空间2.传递数据,为局部变量分配空间3.保护现场,主调函数运行状态和返回值地址入栈4.执行被调函数体5.释放局部变量的栈空间6.恢复现场,取主调函数运行状态和返回值地址7.继续执行主调函数后续语句详细介绍:ebpespeax等均是寄存器1.......