关闭

STL中sort()的相关运用

标签: STL标准模板库sortgreater
200人阅读 评论(0) 收藏 举报
分类:

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这个头文件下面的。

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




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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:13714次
    • 积分:619
    • 等级:
    • 排名:千里之外
    • 原创:50篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条