📅  最后修改于: 2023-12-03 15:09:09.630000             🧑  作者: Mango
在C++中,按降序排序有多种方法,本文将介绍其中的两种:使用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
以上就是按降序排序的两种方法,使用哪种方法根据实际情况而定。