【发布时间】:2017-02-05 18:27:52
【问题描述】:
我必须使用 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);
}
但我不知道这样做的正确顺序算法
【问题讨论】:
-
你似乎几乎明白了。您指定不同奇数会发生什么,以及两个奇数会发生什么。你只是错过了两个偶数的规则。
-
@CygnusX1:实际上他的函数根本没有考虑b的奇偶性。
-
您的订单可以有多种不同的解释方式。当输入为
{ 2, 3, 5, 6, 4, 1 }时,预期的输出是什么?您希望所有个偶数出现在所有个奇数之前?也就是分区,然后分别在两个分区上排序? -
所有偶数升序,然后所有奇数降序