#include <iostream>
void ArrangeEvenOdd(int arr[], int size) {
int left = 0, right = size - 1;
while (left < right) {
if (arr[left] % 2) { // odd
while ((arr[right] % 2 == 1) && right > left)
right--;
std::swap(arr[left++], arr[right--]);
} else { // even
left++;
}
}
}
int main() {
int arr[] = {3, 4, 8, 2, 9, 4, 5, 6};
int size = sizeof(arr) / sizeof(arr[0]);
ArrangeEvenOdd(arr, size);
for (int i = 0; i < size; i++)
std::cout << arr[i] << " ";
}
/*
run:
6 4 8 2 4 9 5 3
*/