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));