sort排序详解

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

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

#include 
#include

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排序详解_第1张图片
对于降序排序可以用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
#include
#include
using namespace std;
int main()
{
    string str("hello world");
    sort(str.begin(),str.end());
    cout<<str;
    return 0;
}

sort排序详解_第2张图片

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

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

你可能感兴趣的:(c++基础)