How to rearrange an array such that every odd index element is greater than its previous in PHP

1 Answer

0 votes
function swap(&$arr, $i, $j) {
    $temp = $arr[$i];
    $arr[$i] = $arr[$j];
    $arr[$j] = $temp;
}

function rearrangeArray(&$arr) {
    $size = count($arr);
    
    for ($i = 0; $i < $size - 1; $i += 2) {
        if ($arr[$i] > $arr[$i + 1]) {
                swap($arr, $i, $i + 1);
        }
    }
    
    // if array size is odd
    if (($size & 1) != 0) {
        for ($i = $size - 1; $i > 0; $i -= 2) {
            if ($arr[$i] > $arr[$i - 1]) {
                swap($arr, $i, $i - 1);
            }
        }
    }
}
        
$arr = array(1, 3, 6, 5, 4, 2, 9, 8, 7);
        
rearrangeArray($arr);

echo json_encode($arr);




/*
run:

[1,5,3,6,2,8,4,9,7]

*/

 



answered Oct 1, 2023 by avibootz
...