C++内置排序函数
课上练习
知识总结
内置排序函数-知识总结
内置排序函数-知识总结 sort函数 在C++中,sort函数可以用来对一组线性存储的数据进行排序,默认情况下可以对这组数据进行从小到大排序,如果需要修改排序规则,则可以通过添加cmp函数来修改排序规则。
使用sort函数需要添加std命名空间。
默认对存储了n个数的数组arr排序的方法是如下:
sort(arr, arr + n); // 从小到大排序
sort(arr, arr + n, cmp); // 使用cmp函数排序cmp函数 sort函数自定义排序规则所cmp函数是一种接受两个参数并返回布尔值的函数,对于两个参数a和b,如果cmp(a, b)返回true,则认为a应该排在b前面。
从大小到小排序的cmp函数代码示例如下:
bool cmp(int a, int b) {
return a > b;
}️课后作业
☝️总结作业
总结作业非常重要,请务必认真完成✔️
- 使用sort函数对一个大小为n的数组arr按照从小到大排序的代码应该如何编写?
- 如何使用sort函数对数据进行自定义排序?
- 在sort函数中所使用的cmp函数若返回结果为真代表什么意义?
✌️编程作业
考试只有一次提交机会,请务必本地检查正确后再提交❇️
👌编程作业标准答案
请在AC后或者思考15分钟没有进展后查看,不可抄代码❇️
L2184题解+参考代码
L2184题解+参考代码 题目链接 n个一位数能够组成的最大数:L2184
题解 我们需要找到由 n 个一位数字能够组成的最大的整数。我们可以将这些数字按降序排列,然后按顺序拼接成一个整数即可。
算法步骤 读取输入:读取整数 n 和接下来的 n 个一位数字。 排序:对这些一位数字进行降序排序。 拼接结果:将排序后的数字拼接成一个字符串。 输出结果:输出拼接后的字符串。 示例代码 这里是使用 C++ 实现的示例代码:
1#include <bits/stdc++.h>
2using namespace std;
3
4int main() {
5 // 读取输入
6 int n;
7 cin >> n;
8 int digits[10];
9 for (int i = 0; i < n; ++i) {
10 cin >> digits[i];
11 }
12
13 // 对一位数字进行降序排序
14 sort(digits, digits + n, greater<int>());
15
16 // 拼接结果
17 string result;
18 for (int i = 0; i < n; ++i) {
19 result += to_string(digits[i]);
20 }
21
22 // 输出结果
23 cout << result << endl;
24
25 return 0;
26}L2185题解+参考代码
L2185题解+参考代码 题目链接 并列的排名:L2185
题解 我们需要计算某个选手在按分数高低排名方式下的名次。如果多名选手的成绩相同,则他们并列一个名次。
算法步骤 读取输入: 读取选手数 n。 读取每位选手的成绩,并存储在数组中。 读取要查询的选手的成绩 x。 排序: 对选手的成绩进行降序排序。 计算排名: 初始化排名为 1,从最高分开始计算排名。 遍历排序后的成绩列表,逐一比较每个成绩。 如果当前成绩等于要查询的成绩 x,输出当前排名。 如果当前成绩小于前一个成绩,更新排名。 示例代码 这里是使用 C++ 实现的示例代码:
1#include <bits/stdc++.h>
2using namespace std;
3
4int main() {
5 // 读取输入
6 int n;
7 cin >> n;
8 int scores[100];
9 for (int i = 0; i < n; ++i) {
10 cin >> scores[i];
11 }
12 int x;
13 cin >> x;
14
15 // 对选手的成绩进行降序排序
16 sort(scores, scores + n, greater<int>());
17
18 // 计算 x 的排名
19 int rank = 1; // 排名从1开始
20 for (int i = 0; i < n; ++i) {
21 if (scores[i] == x) {
22 cout << rank << endl;
23 return 0;
24 }
25 // 如果当前成绩小于前一个成绩,更新排名
26 if (i > 0 && scores[i] < scores[i - 1]) {
27 rank = i + 1;
28 }
29 }
30
31 return 0;
32}