Lists
Code
Diff
  • #include <vector>
    
    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());
    • }
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}

#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;
}