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;
}