从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

sort函数在使用中很是好用,也很是简单,并且效率与冒泡或者选择排序不是一个数量级。本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能讲讲其用法:ios

一、sort入门:函数

使用sort须要包含algorithm头文件,完整代码以下spa

#include<iostream>
#include<vector>
#include<algorithm>//貌似能够不用,但最好加上。
using namespace std;
int main()
{
    vector<int>v;
    v.push_back(13);
    v.push_back(23);
    v.push_back(03);
    v.push_back(233);
    v.push_back(113);
    sort(v.begin(),v.end());
    int i=0;
    for(i=0;i<5;i++)
    {
        cout<<v[i]<<endl;
    }
    system("pause");
    return 0;
}

运行结果以下:code

3
13
23
113
233
请按任意键继续. . .对象

能够看到结果是从小到大排序,但若是我须要从大到小排序呢?blog

二、改写comp从大到小排序。排序

加入comp函数后代码以下:索引

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool comp(const int &a,const int &b)
{
    return a>b;
}
int main()
{
    vector<int>v;
    v.push_back(13);
    v.push_back(23);
    v.push_back(03);
    v.push_back(233);
    v.push_back(113);
    sort(v.begin(),v.end(),comp);
    int i=0;
    for(i=0;i<5;i++)
    {
        cout<<v[i]<<endl;
    }
    system("pause");
    return 0;
}

运行结果:it

233
113
23
13
3
请按任意键继续. . .io

为何会这样呢?比较时sort函数根据comp函数进行判断输的大小,系统默认a<b时返回真,因而从小到大排,而个人comp函数设定为a>b时返回为真,那么最终获得的排序结果也相应的从小到大变成从大到小。简单吧~~

三、对结构体排序

有了comp函数咱们就能够实现对任意结构体任意对象进行排序,只须要对应修改comp函数便可实现。代码以下:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct ss
{
    int a,b;
};
bool comp(const ss &a,const ss &b)
{
    return a.a<b.a;
}
int main()
{
    vector<ss>v;
    ss s1,s2,s3,s4,s5;
    s1.a=4;s1.b=23;
    s2.a=1;s2.b=213;
    s3.a=2;s3.b=231;
    s4.a=5;s4.b=123;
    s5.a=3;s5.b=223;
    v.push_back(s1);
    v.push_back(s2);
    v.push_back(s3);
    v.push_back(s4);
    v.push_back(s5);
    sort(v.begin(),v.end(),comp);
    int i=0;
    for(i=0;i<5;i++)
    {
        cout<<v[i].a<<" "<<v[i].b<<endl;
    }
    system("pause");
    return 0;
}

好比ss结构体中a表明的是索引号,b表明的是索引对应的值,那么我想按索引排序,经过改写comp函数便可实现。

结果:

1 2132 2313 2234 235 123请按任意键继续. . .

相关文章
相关标签/搜索