c++ stl下的sort()函数介绍及基本用法

我们知道,c和c++下各有一个排序函数,分别为qsort和sort。显然,c++的sort函数更方便,也更优雅,所以我们在实战时经常使用sort()函数。
下面介绍sort()函数的参数类型:

sort(首元素地址,末元素地址的下一个地址,比较函数)

其中,前两个参数为必填项,最后一个参数是选填项,如果不填最后一项,sort函数默认进行递增排序。

下面来一个例子:

#include 
using namespace std;

int main(){
    int a[5]={5,3,1,4,2};
    sort(a,a+5);//注意第二个参数
    for(int i=0;i<5;i++)
        cout<<a[i]<<' ';
    return 0;
}

输出为:1 2 3 4 5

上例是以int型为例,double,char型用法与其相同。(char型默认按字典序排序)

下面来讨论cmp函数的使用场景和用法。

在我们想自定义排序顺序(从大到小或者从小到大)或者给结构体里的元素排序时,我们不可避免地会用到cmp函数,下面给出编写sort()函数的代码:(以int型元素为例,double和char同理)

降序排序的cmp函数:

bool cmp(int a,int b)
{
     return a>b;//这里可理解为如果a大于b,就把a放在b前面
}

升序排序的cmp函数:

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

下面来看示例:

#include 
using namespace std;
bool cmp(int a,int b)
{
     return a>b;
}
int main(){
    int a[5]={5,3,1,4,2};
    sort(a,a+5,cmp);
    for(int i=0;i<5;i++)
        cout<<a[i]<<' ';
    return 0;
}

输出为:5 4 3 2 1

最后,cmp函数可以指定结构体里的特定元素进行排序;sort函数也可以应用在vector、deque、string容器中,这里不过多讨论。

你可能感兴趣的:(算法打怪升级之路)