您的位置:首页 > 编程语言 > PHP开发

PHP 实现木桶算法

2016-04-24 23:13 405 查看
算法思路:数组是连续存储排列而成,把待排序的值形成数组的键,输出数组。

<?php
/**
木桶排序:主要是利用空间换取时间复杂度,但是有一定的局限性,一般项目中使用快速排序的比较多
主要考察知识点:1逻辑算法,2php中的数组函数,3php基础语法
*/

function bucketSort($array){
//1首先产生两个数字,即最大值和最小值,然后利用两个数据产生木桶装装载数据
$min = $array[0];
$max = $array[0];
$len = (int)count($array);
for($i=1;$i<$len;++$i){
if($array[$i]<$min){
$min = $array[$i];
}elseif($array[$i]>$max){
$max = $array[$i];
}
}
//1产生桶
$buckets = array_fill($min,$max-$min+1,0);
//2统计出现的次数(在桶内统计出次数)
foreach($array as $v){
++$buckets[$v];//在桶内统计出次数
}
//3把桶内的数据输出来
foreach($buckets  as $k=>$v){
for($i=1;$i<=$v;++$i){//$v为值出现的次数
$res[] = $k;
}
}
return $res;
}
//-------------------------------------------数据测试--------------------------
$array = array(12,23,45,14,45,32);
var_dump(bucketSort($array));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: