📜  如何按降序排序 c++ (1)

📅  最后修改于: 2023-12-03 15:09:09.630000             🧑  作者: Mango

如何按降序排序 C++

在C++中,按降序排序有多种方法,本文将介绍其中的两种:使用STL的sort()函数和手写比较函数。下面对这两种方法进行详细介绍。

STL的sort()函数

STL(Standard Template Library)是C++的一种标准库,其中包含了许多常用的函数和数据结构。sort()函数是其中的一个排序函数,可以用来升序或降序排序。

sort()函数的格式如下:

sort(start, end, cmp);

其中,start和end是待排序的元素范围,cmp是一个可选参数,表示自定义的比较函数,如果不提供此参数,则默认使用less比较函数进行升序排序。

为了实现降序排序,我们只需要自定义一个greater比较函数即可。greater是STL中的一个函数对象,其作用是按照元素的“大于运算符”进行比较。

下面是一个例子:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main(){
    vector<int> v{5, 3, 7, 1, 9};
    sort(v.begin(), v.end(), greater<int>());
    for(int i=0; i<v.size(); i++){
        cout << v[i] << " ";
    }
    cout << endl;
    return 0;
}

输出结果为:

9 7 5 3 1
手写比较函数

除了使用STL的sort()函数外,我们还可以手动编写比较函数来实现降序排序。

手写比较函数的格式如下:

bool cmp(int a, int b){
    // 比较条件
    // 返回值为真表示a排在b的前面
    // 返回值为假表示a排在b的后面
}

下面是一个例子:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

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

int main(){
    vector<int> v{5, 3, 7, 1, 9};
    sort(v.begin(), v.end(), cmp);
    for(int i=0; i<v.size(); i++){
        cout << v[i] << " ";
    }
    cout << endl;
    return 0;
}

输出结果为:

9 7 5 3 1

以上就是按降序排序的两种方法,使用哪种方法根据实际情况而定。