【发布时间】:2019-03-12 03:32:18
【问题描述】:
我是一名新程序员,我正在尝试按奇偶性对整数向量进行排序 - 将偶数放在赔率前面。奇数或偶数本身的顺序无关紧要。比如给定一个输入[3,1,2,4],输出可以是[2,4,3,1]或者[4,2,1,3]等。下面是我的c++代码,有时候我幸运的是向量被正确排序,有时它没有。我导出了奇数和偶数向量,它们看起来是正确的,但是当我尝试将它们组合在一起时,它就搞砸了。有人可以帮我调试吗?
class Solution {
public:
vector<int> sortArrayByParity(vector<int>& A) {
unordered_multiset<int> even;
unordered_multiset<int> odd;
vector<int> result(A.size());
for(int C:A)
{
if(C%2 == 0)
even.insert(C);
else
odd.insert(C);
}
merge(even.begin(),even.end(),odd.begin(),odd.end(),result.begin());
return result;
}
};
【问题讨论】:
-
std::merge适用于排序范围。 en.cppreference.com/w/cpp/algorithm/merge您的范围未排序。 -
考虑使用算法标头中的
std::sort和自定义比较器,按照您想要的方式对它们进行排序。 -
std::merge并没有按照你的想法去做。
标签: c++