sort函数用法(二)(c++)

问题描述:
输入描述:

输入第一行包括一个整数N(1<=N<=100),代表学生的个数。接下来的N行每行包括两个整数p和q,分别代表每个学生的学号和成绩。

输出描述:

按照学生的成绩从小到大进行排序,并将排序后的学生信息打印出来。如果学生的成绩相同,则按照学号的大小进行从小到大排序。

输入例子:

3
1 90
2 87
3 92

输出例子:

2 87
1 90
3 92

代码:

#include <iostream>
#include<stdio.h>
#include<algorithm>

using namespace std;

struct student{
int num;
int score;

};


bool Compare(student s1,student s2){
if(s1.score==s2.score)
    return s1.num<s2.num;
else
return s1.score<s2.score;
}


int main()
{student a[200];
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
    scanf("%d%d",&a[i].num,&a[i].score);
}
    sort(a,a+n,Compare);



for(int i=0;i<n;i++){
    printf("%d  %d\n",a[i].num,a[i].score);
}
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中,sort函数是用于对容器中的元素进行排序的函数。它可以对数组、向量、列表等容器进行排序操作。sort函数用法如下: ```cpp #include <algorithm> // 包含sort函数的头文件 // 定义一个比较函数,用于指定排序规则 bool compare(int a, int b) { return a < b; // 升序排序 } int main() { int arr[] = {5, 2, 8, 1, 9}; // 对数组进行排序 std::sort(arr, arr + 5); // 默认升序排序 // 对数组进行降序排序 std::sort(arr, arr + 5, std::greater<int>()); // 对容器进行排序 std::vector<int> vec = {5, 2, 8, 1, 9}; std::sort(vec.begin(), vec.end()); // 默认升序排序 // 对容器进行降序排序 std::sort(vec.begin(), vec.end(), std::greater<int>()); // 使用自定义的比较函数进行排序 std::sort(vec.begin(), vec.end(), compare); return 0; } ``` 在上述代码中,我们首先包含了<algorithm>头文件,该头文件中包含了sort函数的定义。然后我们可以使用sort函数对数组或容器进行排序。 对于数组,我们可以使用`std::sort(arr, arr + n)`来对数组进行排序,其中arr是数组的起始地址,arr + n是数组的结束地址。默认情况下,sort函数会按照升序进行排序。 对于容器,我们可以使用`std::sort(vec.begin(), vec.end())`来对容器进行排序,其中vec是容器的名称,begin()和end()函数分别返回容器的起始迭代器和结束迭代器。同样,默认情况下,sort函数会按照升序进行排序。 如果需要按照降序进行排序,可以使用`std::sort(arr, arr + n, std::greater<int>())`或`std::sort(vec.begin(), vec.end(), std::greater<int>())`,其中std::greater<int>()是一个函数对象,用于指定降序排序规则。 此外,我们还可以自定义比较函数来指定排序规则。在上述代码中,我们定义了一个compare函数,用于指定升序排序规则。然后在sort函数中使用`compare`作为第三个参数传入。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值