PHP 计数排序算法
Posted 胡不懂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 计数排序算法相关的知识,希望对你有一定的参考价值。
计数排序只适用于整数在小范围内排序
$arr = [95,94,91,98,99,90,99,93,91,92];
function countSort($arr){
$max = $arr[0];
$min = $arr[0];
for($i=0;$i<count($arr);$i++){
if($arr[$i]>$max){
$max = $arr[$i];
}
if($arr[$i] < $min){
$min = $arr[$i];
}
}
try{
$frequency = new SplFixedArray($max-$min+1);
for($i=0;$i<count($arr);$i++){
if(empty($frequency[$arr[$i]-$min]))
$frequency[$arr[$i]-$min] = 0;
$frequency[$arr[$i]-$min] += 1;
}
$sum = 0;
for ($i=0; $i < count($frequency); $i++) {
$sum += $frequency[$i];
$frequency[$i] = $sum;
}
$splfixed = new SplFixedArray(count($arr));
for($i=(count($arr)-1);$i>=0;$i--){
$splfixed[$frequency[$arr[$i]-$min]-1] = $arr[$i];
$frequency[$arr[$i]-$min] -= 1;
}
}catch(RuntimeException $re){
echo "RuntimeException: ".$re->getMessage()."
";
}
print_r($splfixed->toArray());
}
countSort($arr);
以上是关于PHP 计数排序算法的主要内容,如果未能解决你的问题,请参考以下文章