首页
软件
文章
留言
关于
【C++】sort函数排序用法-文章-bci9

【C++】sort函数排序用法

 [标签]  C++  函数
 2022-07-04
sort函数排序用法 用来给数组排序,速度快,较稳定,支持结构体数组排序。 头文件:
#include<algorithm>
sort(A,B,C) A:数组(不用加[],如果不从第0位开始排序,第几位就+几,不能省略) B:数组+n(不用加[](多为数组加要排序的数组下标,省略最后一个),排序到第几位就+几,不能省略) C:排序方式(可省略,结构体数组排序时必须,默认是从小到大,需要一个bool函数返回值) 排序方式:
bool cmp(int a,int b){
	return a>b;(从大到小排,a<b从小到大排)
}
例子:
//从小到大
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
	int k[5]={2,4,1,3,5};
	sort(k,k+5);
	for(int i=0;i<5;i++){
		cout << k[i] << " ";
	}
}
//结果:1 2 3 4 5

//从大到下
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b);
bool cmp(int a,int b){
	return a>b;
}
int main(){
	int k[5]={2,4,1,3,5};
	sort(k,k+5,cmp);
	for(int i=0;i<5;i++){
		cout << k[i] << " ";
	}
}
//结果:5 4 3 2 1
结构体数组排序: 当一个结构体中变量改变位置,其他的变量也会一起移动。 结构体排序的bool函数: bool cmp(结构体定义名称 n,结构体定义名称 m){ return n.要排序的结构体变量>m.要排序的结构体变量;(从大到小排,"<"从小到大排) } sort的A和B都不用加后缀 例子:
//从小到大
#include<iostream>
#include<algorithm>
using namespace std;
struct jgt{
	int id,age;
};
bool cmp(jgt a,jgt b);
bool cmp(jgt a,jgt b){
	return a.age<b.age;
}
int main(){
	int n;
	cin >> n;
	jgt k[n];
	for(int i=0;i<n;i++){
		cin >> k[i].age;
		k[i].id=i+1;
	}
	sort(k,k+n,cmp);
	for(int i=0;i<n;i++){
		cout << k[i].id << " " << k[i].age << endl;
	}
}
/*
输入: 6 15 46 37 41 25 37
输出:
1 15
5 25
3 37
6 37
4 41
2 46
*/
©bci9 版权所有

联系站长 web@bci9.cn

bci9公众号