【排序】C++STL中sort从大到小排序(降序排序)、sort自定义排序规则、多关键字排序

🌌 365体育官网下载 ⏳ 2025-09-01 08:54:07 👤 admin 👁️ 179 💖 921
【排序】C++STL中sort从大到小排序(降序排序)、sort自定义排序规则、多关键字排序

sort降序排序

写法一

int q[N];

sort(q, q + n, greater()); //q为数组名,n为数组长度

vector q;

sort(q.begin(), q.end(), greater());

写法二

int q[N];

sort(q, q + n, [](int a, int b) { return a > b; });

vector q;

sort(q.begin(), q.end(), [](int a, int b) { return a > b; });

pair按第一关键字降序、第二关键字升序

按第一关键字降序排序pair

using PII = pair;

vector q;

//写法一

sort(q.begin(), q.end(), greater());

//写法二

sort(q.begin(), q.end(), [](PII a, PII b) { return a.first > b.first; });

按第二关键字升序排序pair

using PII = pair;

vector q;

sort(q.begin(), q.end(), [](PII a, PII b) { return a.second < b.second; });

sort按绝对值从大到小排序

sort(nums.begin(), nums.end(), [](int a, int b) {

return abs(a) > abs(b);

});

sort多关键字排序

已知vector只含两个元素(效果等同于pair)。

排序规则:

当第一关键字相同时,按第二关键字升序排序,否则按第一关键字降序排序

写法一

sort(people.begin(), people.end(), [](vector &a, vector &b) {

if (a[0] == b[0]) return a[1] < b[1];

return a[0] > b[0];

});

写法二

sort(people.begin(), people.end(), [](vector &a, vector &b) {

if (a[0] != b[0]) return a[0] > b[0];

return a[1] < b[1];

});

相关文章