radix Sort in php

Complete programme of radix Sort in php

<?php

//get the digits value by it's place
function getDigit($num,$i){
    return floor(abs($num) /pow(10,$i))%10;
}

function digitsCount($num){
    if ($num==0)return 1;
    return floor(log10(abs($num)))+1;
}


function maxDigits($arr){
    $maxDigits=0;
    for ($i=0;$i<count($arr);$i++){
        $maxDigits=max($maxDigits,digitsCount($arr[$i]));
    }
    return $maxDigits;
}


function radixSort($nums){
    $maxDigitsCount=maxDigits($nums);
    for ($k=0;$k<$maxDigitsCount;$k++){
        $digitBucket=array_fill(0,10,[]);

        for ($i=0;$i<count($nums);$i++){
            $digitBucket[getDigit($nums[$i],$k)][]=$nums[$i];
        }


        $nums=  concat($digitBucket);


    }

    return $nums;
}
?>

Leave a Comment