How to sort an array that consists of only 0s and 1s in PHP

1 Answer

0 votes
// Function to sort an array containing only 0s and 1s
function sortBinaryArray(&$arr) {
    $left = 0;                      // Index to track the left side
    $right = count($arr) - 1;       // Index to track the right side

    while ($left < $right) {
        // If the left index is at 0, move it forward
        if ($arr[$left] == 0) {
            echo "left: $left\n";
            $left++;
        }
        // If the right index is at 1, move it backward
        else if ($arr[$right] == 1) {
            echo "right: $right\n";
            $right--;
        }
        // If left is 1 and right is 0, swap them
        else {
            $temp = $arr[$left];
            $arr[$left] = $arr[$right];
            $arr[$right] = $temp;
            echo "swap() left: $left right: $right\n";
            $left++;
            $right--;
        }
    }
}

// Input: Binary array
$arr = [1, 0, 1, 0, 1, 0, 0, 1, 0];

sortBinaryArray($arr);

// Output the sorted array
echo "Sorted array: ";
foreach ($arr as $num) {
    echo "$num ";
}




/*
run:

swap() left: 0 right: 8
left: 1
right: 7
swap() left: 2 right: 6
left: 3
swap() left: 4 right: 5
Sorted array: 0 0 0 0 0 1 1 1 1 

*/

 



answered Sep 2 by avibootz
...