<?php
/**
* 桶式排序
*
* 思路: 造做一个空桶, 然后把有值的数在空桶中做一个标记,再便利这个桶就得出了排序好的数
* @param $arr 要排序的数组
* @return array 排序好的数组
*/
function Bucket($arr){
// 放入已排序好的数
$arrs = array();
// 计算出最大值,最小值
$max = max($arr);
$min = min($arr);
// 造一个空桶
$bucket = array_fill($min,$max-1,0);
// 便利做标记
foreach($arr as $v){
$bucket[$v]++;
}
// 把做好标记的数取出,得到就是已经排序好的数
foreach($bucket as $k => $v){
for($i=0; $i<$v; ++$i){
$arrs[] = $k;
}
}
return $arrs;
}
echo '<pre>';
$arr = array(12,6,18,2,9,14);
print_r(Bucket($arr));
?>
桶式排序
最新推荐文章于 2019-11-28 13:42:01 发布