我必须使用std :: sort()对数组中的数字进行排序,如下所示:
偶数递增,然后奇数递减
到目前为止,我得到了:#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
bool order(int a, int b)
{
if (a % 2 == 0)
{
return a < b;
}
else if(a % 2 != 0)
{
return b < a;
}
}
int main()
{
std::vector<int> v = { 2, 3, 5, 6, 4, 1 };
std::sort(v.begin(), v.end(), order);
}
但我无法弄清楚正确的顺序算法
答案 0 :(得分:2)
if (a % 2 == b % 2) { // same parity
if (a % 2) { // odd descending
return b < a;
} else { // even ascending
return a < b;
}
} else { // odd is bigger than even
return b % 2;
}
答案 1 :(得分:2)
用std:
std::vector<int> v {2, 3, 5, 6, 4, 1};
auto it = std::partition(v.begin(), v.end(), [](int e) { return e % 2 == 0; });
std::sort(v.begin(), it);
std::sort(it, v.end(), std::greater<>{});
// `v` would be now { 2, 4, 6, 5, 3, 1}.