function ArrangeEvenOdd(&$arr) {
$left = 0;
$right = count($arr) - 1;
while ($left < $right) {
if (($arr[$left] % 2) != 0) { // odd
while (($arr[$right] % 2 == 1) && $right > $left) {
$right--;
}
$tmp = $arr[$left];
$arr[$left++] = $arr[$right];
$arr[$right--] = $tmp;
}
else { // even
$left++;
}
}
}
$arr = array(3, 4, 2, 9, 4, 8, 5, 6);
ArrangeEvenOdd($arr);
foreach ($arr as $n) {
echo $n . " ";
}
/*
run:
6 4 2 8 4 9 5 3
*/