自定义排序

sort() 函数真香!一行就帮我解决了数据排序问题,妈妈再也不用担心我排序出错了。

我们再来回顾一下 sort() 的使用方法。

#include <algorithm>
int a[10];
sort(a,a+10);  //从小到大排
sort(a,a+10,greater<int>());  //从大到小排

自定义排序规则

sort() 函数默认是从小到大排序,如果往小括号内填入第三个参数,则可以实现更多不同的排序规则,比如 greater<int>() 就是从大到小的排序规则。

那我们能不能自己编写 从大到小 的排序规则,让 sort() 按照我们的规则来排序呢?

来看程序:

bool cmp(int x,int y){
    if(x>y) return true;
    else return false;
}

sort(a,a+n,cmp);

在上面的程序中,我们定义了一个 cmp() 函数,传入了两个参数 x 和 y 。

然后把这个 cmp 作为参数传给了 sort() 。

sort() 就会将要比较的两个数传入 cmp() ,根据 cmp() 返回的值来决定两个数的位置。

如果 第一个参数 应该在 第二个参数 前面,则返回 true ,否则则返回 false


从大到小排序

输入 n 个数,请将它们从大到小排序后输出。

输入格式

第一行,一个整数(n≤1000)

第二行,共 n 个整数,数与数之间用一个空格隔开。

输出格式

一行,共 n 个整数,数与数之间用一个空格隔开。

输入样例

5
7 3 5 2 9

输出样例

9 7 5 3 2

代码 

#include<bits/stdc++.h>
using namespace std;  
  bool cmp(int x,int y){
    if(x>y) return true;
    else return false;
}int a[10010];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
    cin>>a[i];
}
sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++){
    cout<<a[i]<<" ";
}
    return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值