欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-04-07 09:32:17
...
这篇文章给大家介绍的内容是关于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如何实现计数排序的代码的详细内容,更多请关注其它相关文章!

相关标签: 排序 php