排序
2025/9/12约 272 字小于 1 分钟
排序
std::sort
使用CPP内置STL库的 sort() 算法
用法:
// a[0] .. a[n - 1] 为需要排序的数列
// 对 a 原地排序,将其按从小到大的顺序排列
std::sort(a, a + n);
// cmp 为自定义的比较函数
std::sort(a, a + n, cmp);
std::sort(a + 1, a + 1 + n); // a[1] .. a[n] 从小到大排序
std::sort(a + 1, a + 1 + n, greater<int>()); // a[1] .. a[n] 从大到小排序自定义比较
运算符重载与cmp函数
struct data {
int a, b;
bool operator<(const data rhs) const {
return (a == rhs.a) ? (b < rhs.b) : (a < rhs.a);
}
} da[1009];
bool cmp(const data u1, const data u2) {
return (u1.a == u2.a) ? (u1.b > u2.b) : (u1.a > u2.a);
}
// ...
std::sort(da + 1, da + 1 + 10); // 使用结构体中定义的 < 运算符,从小到大排序
std::sort(da + 1, da + 1 + 10, cmp); // 使用 cmp 函数进行比较,从大到小排序
std::sort(da + 1, da + 1 + 10, [](const data& u1, const data& u2) {
return (u1.a == u2.a) ? (u1.b > u2.b) : (u1.a > u2.a);
}); // 匿名函数写法