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 计数排序算法的主要内容,如果未能解决你的问题,请参考以下文章

计数排序算法是如何计数的?

算法排序算法之计数排序

排序算法非比较排序:计数排序基数排序桶排序

算法 计数排序

算法计数排序桶排序和基数排序详解

十大经典排序算法总结(计数排序)