- 分享
sort用户
- @ 2024-8-25 14:53:25
1.排序:把一堆杂乱无章的数据变得有序
2.sort()函数 (1)对单一变量进行从小到大排序 sort(要排序数组的第一个数的地址,要排序数组的最后一个数的后面一个地址)
比如 f[10], 要排2,5,sort(f + 2, f + 6); 0~n-1: sort(f, f + n) 1~n : sort(f + 1, f + 1 + n)
sort(f.begin() + 2, f.begin() + 6)
(2)对单一变量进行从大到小排序
sort(要排序数组的第一个数的地址,要排序数组的最后一个数的后面一个地址, 比较函数cmp)
cmp函数一定是bool类型,且参数一定是两个,参数类型为数组的变量类型
特点:原数组中,a一定在b的前面,cmp返回真时,不交换a和b,否则交换a和b
bool cmp(int a, int b)
{
return a > b;
}
(3)对结构体进行排序
#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
struct stu{
int num;
string name;
int math;
int chi;
int sum;
};
//总分高的在前面,总分一样的语文好的在前面
//语文也一样,数学排前面,所有都一样,学号小的在前面
stu f[N];
bool cmp(stu a, stu b) {
if(a.sum == b.sum && a.chi == b.chi && a.math == b.math) return a.num < b.num;
if(a.sum == b.sum && a.chi == b.chi) return a.math > b.math;
if(a.sum == b.sum) return a.chi > b.chi;
return a.sum > b.sum;
}
int main()
{
int n;
cin >> n;
for(int i = 1; i <= n; i++)
{
cin >> f[i].name >>f[i].num >> f[i].chi >> f[i].math;
f[i].sum = f[i].chi + f[i].math;
}
sort(f + 1, f + 1 + n, cmp);
for(int i = 1; i <= n; i++)
{
cout << i << ":" <<f[i].name << " " << f[i].sum << endl;
}
}
14 条评论
-
cdlihanyu LV 5 @ 2024-9-16 1:02:01
( ' - ' )
-
@ 2024-8-28 15:28:106
-
@ 2024-8-28 15:27:495 2 1 3 2 4
-
@ 2024-8-28 15:27:445 2 1 3 2 4
-
@ 2024-8-26 13:29:41......................................................................................
-
@ 2024-8-25 15:36:30
6
👍 3❤️ 3🕊️ 3😄 3🤡 3🌿 3😕 3🤣 3👀 3🍋 3🤔 3👎 3 -
@ 2024-8-25 15:02:20老师不愧是老师,就是这么厉害
🤡 3👀 3😕 2👎 2😄 1 -
@ 2024-8-25 15:02:00你说的对,但是原神(手动划线)但是c++是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言
🤡 4🤣 2 -
@ 2024-8-25 15:01:31你们都给我坐下
👎 4🤡 4 -
@ 2024-8-25 15:01:19好吃
🤡 3👀 2👍 2 -
@ 2024-8-25 15:00:45
朱老师超绝啊呸超绝SORT函数🤡 3🤔 3 -
@ 2024-8-25 15:00:04非常不错,孩子吃的很开心
👍 4🤡 4 -
@ 2024-8-25 14:59:43
( •̀ ω •́ )
🤡 3 -
@ 2024-8-25 14:59:15老师真的非常Good!!!
🤡 4
- 1