这篇文章给大家介绍的内容是关于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);相关文章推荐:
使用模板与程序分离的方式构建,依靠专门设计的数据库操作类实现数据库存取,具有专有错误处理模块,通过 Email 实时报告数据库错误,除具有满足购物需要的全部功能外,成新商城购物系统还对购物系统体系做了丰富的扩展,全新设计的搜索功能,自定义成新商城购物系统代码功能代码已经全面优化,杜绝SQL注入漏洞前台测试用户名:admin密码:admin888后台管理员名:admin密码:admin888
0
以上就是PHP如何实现计数排序的代码的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号