在开始之前,我们来看一道题目
题目描述
给出若干个整数,并输出(排序,从大到小)
输入样例
5 8 9 6 4 2 3 7 1 10
输出样例
10 9 8 7 6 5 4 3 2 1
代码实现
首先,讲解一下排序函数sort
的应用
sort(开始位置,结束位置,参数)
C++
语言默认将小的数排在前,如果要将大的数排在前,必须要加上参数:
sort(a,a+10,greater<int>());
这样就是从大到小排序了
当然,如果把参数写成这样:
sort(a,a+10,less<int>());
程序就会从小到大排序了
好,现在相信大家对这道题目有一定的思路了,我们来写写代码
#include <bits/stdc++.h>
using namespace std;
int main ()
{
int a[10]; //定义变量
for(int i=0;i<10;i++){
cin>>a[i]; //循环输入
}
sort(a,a+10,greater<int>()); //sort排序,开始位置默认+0
//比如:sort(a+0,a+10,greater<int>()); 也是对的
for(int i=0;i<10;i++){
cout<<a[i]<<' '; //输出
}
return 0;
}
运行结果:
那有没有一种更简单的方法呢?
当然有
我们可以写一个布尔类型的函数,返回值为True
,把a
排在b
前面;返回值为False
,把b
排在a
前面
bool cmp(int a,int b){
return a>b;
}
然后,只要在sort
函数里面填上cmp
参数就可以了
sort(a,a+10,cmp);
完整代码:
#include <bits/stdc++.h>
using namespace std;
bool cmp(int a,int b){
return a>b;
}
int main ()
{
int a[10]; //定义变量
for(int i=0;i<10;i++){
cin>>a[i]; //循环输入
}
sort(a,a+10,cmp); //sort排序
for(int i=0;i<10;i++){
cout<<a[i]<<' '; //输出
}
return 0;
}
总结
sort
函数用法:
sort(开始位置,结束位置,参数)
其中,参数可以为less<int>()
、greater<int>()
,还可以是其它自定义的函数
C
语言默认的排序顺序:从小到大
从小到大排序用less<int>()
,从大到小用greater<int>()
bool cmp(int a,int b){
return a>b; //从大到小
return a<b; //从小到大,也可以写成 return b>a;
}