Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,890 questions

51,821 answers

573 users

How to sort an array of 0s, 1s and 2s in PHP

1 Answer

0 votes
function sort012Array(&$arr) {
    $lo = 0;
    $curr = 0;
    $hi = count($arr) - 1;
        
    while ($curr <= $hi) {
        switch ($arr[$curr]) {
            case 0:
                list($arr[$lo], $arr[$curr]) = array($arr[$curr], $arr[$lo]);
                $lo++;
                $curr++;
                break;
            case 1:
                $curr++;
                break;
            case 2:
                list($arr[$curr], $arr[$hi]) = array($arr[$hi], $arr[$curr]);
                $hi--;
                break;
        }
    }
}


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

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





/*
run:

0 0 0 0 0 1 1 1 1 1 2 2 2 

*/

 



answered Apr 20, 2023 by avibootz

Related questions

1 answer 103 views
1 answer 117 views
1 answer 123 views
1 answer 128 views
2 answers 130 views
130 views asked Apr 19, 2023 by avibootz
1 answer 104 views
1 answer 112 views
...