// 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
*/