当前位置:Gxlcms > PHP教程 > PHP如何实现计数排序的代码

PHP如何实现计数排序的代码

时间:2021-07-01 10:21:17 帮助过:35人阅读

这篇文章给大家介绍的内容是关于PHP如何实现计数排序的代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

/**
 * 计数排序: 桶排序的一种
 */
$arr = [5,69,4,32,14,8,74,95,23,56,41,5,31,63];
// include 'data.php';
$length = count($arr);
$maxValue = $arr[0];

// 找出数组中的最大值
for ($i=1; $i < $length; $i++) {
    if ($arr[$i] > $maxValue) {
        $maxValue = $arr[$i];
    }
}
/**
 * 定长数组, 键会自动排序, PHP数组是hash表的实现,
 * 如果这里用普通的数组, 键不会自动排序, 不存在的键也不会自动填充null
 */
$frequency = new SplFixedArray($maxValue + 1);

/**
 * 统计arr中, 值出现的频次
 */
for ($i=0; $i < $length; $i++) {
    if(empty($frequency[$arr[$i]]))
        $frequency[$arr[$i]] = 0;
    $frequency[$arr[$i]] += 1;
}

// 清空$arr
$arr = [];
// 遍历frequency, 如果其元素有值, 那么将键push到arr中
for ($i=0; $i < count($frequency); $i++) {
    if (!empty($frequency[$i])) {
        for ($j=0; $j < $frequency[$i]; $j++) {
            $arr[] = $i;
        }
    }
}

print_r($arr);

相关文章推荐:

php中echo()函数的用法(附代码)

Nginx如何来配置隐藏入口文件index.php(代码)

以上就是PHP如何实现计数排序的代码的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行