【C/C++】排序函数sort()(基本数据类型&结构体排序)
库:
#include<algorithm>
sort函数原型(简化,能用就行):
/*
a和a+n是地址
对区间[a,a+n)中的元素进行排序,默认从小到大
可用cmp函数控制排序规则
*/
sort(a,a+n,cmp){}
1.基本数据类型-修改排序规则-cmp函数
#include<iostream>
#include<algorithm>
using namespace std;
int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 10};
int a_len = sizeof(a) / sizeof(a[0]);
/*
想要的排序规则是什么样,就把形式写在return语句后
如让左边大于右边,则写return a > b;即可
*/
bool cmp(int a, int b) {
return a > b;//把结果形式写在这里即可
}
int main() {
// sort(a,a+a_len);//小到大
sort(a, a + a_len, cmp); //大到小
for (int i = 0; i < a_len; i++)
cout << a[i] << " ";
cout<<endl;
return 0;
}
2.结构体-修改排序规则-cmp函数
#include<iostream>
#include<algorithm>
using namespace std;
const int N=50;
struct SS
{
int num;
};
SS s[N];
int s_len=10;
/*
想要的排序规则是什么样,就把形式写在return语句后
如让左边大于右边,则写return a.num > b.num;即可
*/
bool cmp(SS a, SS b) {
return a.num > b.num;//把结果形式写在这里即可
}
int main() {
for(int i=0;i<=s_len;i++){
s[i].num=i;
}
sort(s, s+ s_len, cmp); //大到小
for (int i = 0; i < s_len; i++)
cout << s[i].num << " ";
cout<<endl;
return 0;
}
3.结构体-修改排序规则-运算符重载
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 50;
struct SS {
int num;
//默认从小到大排序,需要重载"<"运算符
bool operator<(const SS& s2) {
return this->num < s2.num;
}
};
SS s[N];
int s_len = 10;
int main() {
for (int i = 0; i <= s_len; i++) {
s[i].num = s_len - i;
}
sort(s, s + s_len); //小到大
for (int i = 0; i < s_len; i++)
cout << s[i].num << " ";
cout << endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效