#include <stdio.h>
void swap(int* x, int* y) {
int tmp = *x;
*x = *y;
*y = tmp;
}
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--;
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++)
printf("%d ", arr[i]);
return 0;
}
/*
run:
6 4 8 2 4 9 5 3
*/