C++ sort()函数一些简单的用法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Murdock_C/article/details/49406989

C++标准函数模板库(stl)里有个自带的排序函数sort(),该函数可以直接对数组或者类似数组类型的结构体进行排序,其时间复杂度为n*log2(n);sort()函数定义在头文件<algorithm>中,基本用法为:sort(a,a+n);其中,a为一个数组的名称,n为需要排序的数组个数,数组默认起始下标为0;
sort函数默认为升序排列,它缺省了一个参数,如果想让它变为降序排列,需要自定义缺省的那个参数。

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

这样,调用函数sort(a,a+n,cmp),数组a就会默认已降序的排列方式进行排序。
如果我们需要有多个比较条件,例如我们自定义了一个结构体:

struct code
{
    string name;
    int score;
};

我们希望,当code的分数score不同时,对code数组按照降序方式排列;如果相同,则按照名字的升序排列。则需要自定义缺省参数为:

bool cmp (code a, code b)
{
    if (a.score == b.score) return a.name < b.name;
    else return a.score > b.score;
}

调用函数sort(code,code+n,cmp)就可以按照我们那个要求进行排序了。

猜你喜欢

转载自blog.csdn.net/Murdock_C/article/details/49406989