Lists
void re_arrange(std::vector<int>& data) { auto it = std::stable_partition(data.begin(), data.end(), [](int x) { return x % 2 == 0; }); std::sort(data.begin(), it); std::sort(it, data.end()); }
- #include <vector>
- void re_arrange(std::vector<int>& data) {
std::vector<int> even, odd;std::copy_if (data.cbegin(), data.cend(), std::back_inserter(even), [](int num){return num%2 == 0;});std::copy_if (data.cbegin(), data.cend(), std::back_inserter(odd), [](int num){return num%2 == 1;});sort(even.begin(), even.end());sort(odd.begin(), odd.end());std::vector<int> result = even;result.insert(result.cend(), odd.cbegin(), odd.cend());data = result;- auto it = std::stable_partition(data.begin(), data.end(), [](int x) { return x % 2 == 0; });
- std::sort(data.begin(), it);
- std::sort(it, data.end());
- }
Sailloulast month
Arrange list of integer
Lists
Given a list of integers, re-arrange them (in place) such as even and odd numbers are separated and sorted.
For example {1,2,5,0,9,4,7} will be re-arranged as {0,2,4,1,5,7,9}
void re_arrange(std::vector<int>& data) {
std::vector<int> even, odd;
std::copy_if (data.cbegin(), data.cend(), std::back_inserter(even), [](int num){
return num%2 == 0;
});
std::copy_if (data.cbegin(), data.cend(), std::back_inserter(odd), [](int num){
return num%2 == 1;
});
sort(even.begin(), even.end());
sort(odd.begin(), odd.end());
std::vector<int> result = even;
result.insert(result.cend(), odd.cbegin(), odd.cend());
data = result;
}
Describe(simple_example)
{
It(re_arrange_simple)
{
auto data = std::vector<int>{1,2,5,0,9,4,7};
re_arrange(data);
Assert::That(data, Equals(std::vector<int>{0,2,4,1,5,7,9}));
}
};