How to sort an array of 0, 1 and 2 values with while loop and switch in PHP

1 Answer

0 votes
function swap(&$a, &$b) { 
    $tmp = $a; 
    $a = $b; 
    $b = $tmp; 
} 

function ssort(&$arr) { 
    $start = 0; 
    $end = sizeof($arr) - 1; 
    $mid = 0; 
  
    while ($mid <= $end) { 
        switch ($arr[$mid]) { 
            case 0: 
                swap($arr[$start++], $arr[$mid++]); 
                break; 
            case 1: 
                $mid++; 
                break; 
            case 2: 
                swap($arr[$mid], $arr[$end--]); 
                break; 
        } 
    } 
} 
  

$arr = array(2, 1, 0, 0, 1, 2, 2, 1, 1, 2);
  
ssort($arr); 

for ($i = 0; $i < sizeof($arr); $i++) {
       echo $arr[$i] . " ";     
}


  
/*
run:
       
0 0 1 1 1 1 2 2 2 2 
      
*/

 



answered May 1, 2019 by avibootz
...