STL中sort()的相关运用

C++中的sort就是实现一个排序的功能,他是包含在algorithm头文件下面的。

sort(起始地址,结束地址,排序方法)

最后一个参数为排序方法是可写可不写的,如果不写就是这样sort(起始地址,结束地址),默认这种排序是从小到大


举个例说明一下:如果我要对3个整数进行排序

#include<cstdio>
#include<algorithm>
using namespace std;
int a[5];
int main()
{
    int n=3;
    for(int i=0;i<n;i++)
        scanf("%d",&a[i]);
    sort(a,a+n);//这里就是没有写第三个参数,就默认是从小到大排序
    for(int i=0;i<n;i++)
        printf("%d%c",a[i],i==2?'\n':' ');
}


如果我们要完成从大到小也是可以的,我们只需要加入第三个参数既可

#include<cstdio>
#include<algorithm>
using namespace std;
int a[5];
int cmp(int num1,int num2)
{
    //return num1<num2;.//如果写这句话就是表示从小到大排序
    return num1>num2;//写这句话就是代表从大到小排序
}
int main()
{
    int n=3;
    for(int i=0;i<n;i++)
        scanf("%d",&a[i]);
    sort(a,a+n,cmp);
    for(int i=0;i<n;i++)
        printf("%d%c",a[i],i==2?'\n':' ');
}


对于初学者来说,希望我这样浅谈一下对于你们有所帮助


但是我还是想说,如果要求从大到小排序,大家每次都要去写一个比较函数就会很麻烦,既然讲STL,那么我们就要学会使用C++为我们提供的资源

#include<cstdio>
#include<set>
#include<algorithm>
using namespace std;
int a[5];
int main()
{
    int n=3;
    for(int i=0;i<n;i++)
        scanf("%d",&a[i]);
    sort(a,a+n,greater<int>());//这个也是STL种为我们准备好的函数
    for(int i=0;i<n;i++)
        printf("%d%c",a[i],i==2?'\n':' ');
}
我相信观察仔细的人就会发现我多了一个头文件,因为我是调用的库函数,也就是说greater是包含在set这个头文件下面的。

这样也很方便的实现了从大到小的排序。




题目中如果出现错误,希望大家留言告诉,一起进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值