sort函数默认的排序方式是升序排序,即从小到大。

1.对简单的数组排序
简单来说就是sort(begin,end,cmp);
sort函数中参数有三个(第三个可以省略)
其中begin是排序数组的起始地址
end是排序数组的结束地址(最后一位要排序元素的地址)这两个参数都是地址。

#include <iostream>
#include<algorithm>

using namespace std;

int main()
{
    int a[6]={6,2,3,1,5,10};
    sort(a,a+6);
    for(int i=0;i<6;i++)
        cout<<a[i]<<" ";
    return 0;
}

在这里插入图片描述
对于降序排序可以用sort(a,a+10,greater());
也可以自定义cmp函数

bool cmp(int a,int b)
{
    return a>b;
}

另外相对应的升序排序用sort(a,a+10,less());

bool cmp(int a,int b)
{
    return a<b;
}

2.对string型 按字典序排序

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
    string str("hello world");
    sort(str.begin(),str.end());
    cout<<str;
    return 0;
}

在这里插入图片描述

3.对结构体排序
对于结构体排序其实也不难,只是需要我们自己重写cmp函数
例如要对结构体中的元素b按照升序排序。

#include<bits/stdc++.h>
using namespace std;

struct node{
    int a;
    int b;
};
bool cmp(node time1,node time2)
{
    return time1.b<time2.b;
}
int main()
{
    int n;
    cin>>n;
    node time[n+10];
    for(int i=0;i<n;i++)
        cin>>time[i].a>>time[i].b;
    sort(time,time+n,cmp);
    for(int i=0;i<n;i++)
    {
        cout<<time[i].a<<" "<<time[i].b<<endl;
    }
    return 0;
}

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐