桶排序中最重要的环节是映射函数。
初步学习桶排序的过程中,映射比较简单。实现代码如下:
/** * 第一种桶排序的办法,每个桶存储相同值的数据 * */ function bucketSort($nonSortArray){ //选出桶中最大值和最小值 $min = min($nonSortArray); $max = max($nonSortArray); //生成桶,默认每个桶中数据只有0个 $bucket = array_fill($min, $max-$min+1, 0); //数据入桶 foreach ($nonSortArray as $value){ $bucket[$value]++;//对应桶的个数计增 } //数据出桶 $sortArray = array(); foreach ($bucket as $k=>$v){ for($i=1;$i<=$v;$i++){ //每个桶中的数据个数 $sortArray[]=$k; } } return $sortArray; } $array = array(58,5,96,75,4,69,82,35,64,15,23,69,8,5,2,52); $arr = bucketSort($array); echo implode(",", $arr);
建议学习链接: