/**
*基数排序 又称桶子排序
$arr = [123,12,3,45,235,3,545,56,4,5,56,568,568,22,132,123,42,523,345,34,46,64,1233];
// $arr = [2,343,342,1,128,43,4249,814,687,654,3];
//第一步先定义数组 十个桶子
$sort = [];
//创建十个桶 下标分别是桶号
for($i = 0;$i<=9;$i++)
{
$sort[$i] = [];
}
//获取数组的大小
$count = count($arr); //获取数组的长度,数组中共有多少个元素
//获取数组中最大的值
$max = max($arr); //获取数组中最大的值
//统计最大值有多少位
$len = strlen($max);
//循环需要把对应桶子的数放入对应的桶子中
for($i = 0;$i<$len;$i++)
{
//计算基数
$exp = pow(10,$i);
//进入桶子中
for($j = 0;$j<$count;$j++)
{
$num = ($arr[$j]/$exp)%10; //求出所对应的位数上的数了
$sort[$num][] = $arr[$j]; //放入桶内
}
//把分好的桶子里的数接着连起来进行下一位的比较
$arr = []; //先把数组清空 等会把带排好的数放进arr
foreach($sort as $k=>$v)
{
//直接把sort的值按照顺序放进来arr中
$arr = array_merge($arr,$v);
$sort[$k] = [];
}
}
echo "<pre>";
print_r($arr);
*基数排序 又称桶子排序
*/
$arr = [123,12,3,45,235,3,545,56,4,5,56,568,568,22,132,123,42,523,345,34,46,64,1233];
// $arr = [2,343,342,1,128,43,4249,814,687,654,3];
//第一步先定义数组 十个桶子
$sort = [];
//创建十个桶 下标分别是桶号
for($i = 0;$i<=9;$i++)
{
$sort[$i] = [];
}
//获取数组的大小
$count = count($arr); //获取数组的长度,数组中共有多少个元素
//获取数组中最大的值
$max = max($arr); //获取数组中最大的值
//统计最大值有多少位
$len = strlen($max);
//循环需要把对应桶子的数放入对应的桶子中
for($i = 0;$i<$len;$i++)
{
//计算基数
$exp = pow(10,$i);
//进入桶子中
for($j = 0;$j<$count;$j++)
{
$num = ($arr[$j]/$exp)%10; //求出所对应的位数上的数了
$sort[$num][] = $arr[$j]; //放入桶内
}
//把分好的桶子里的数接着连起来进行下一位的比较
$arr = []; //先把数组清空 等会把带排好的数放进arr
foreach($sort as $k=>$v)
{
//直接把sort的值按照顺序放进来arr中
$arr = array_merge($arr,$v);
$sort[$k] = [];
}
}
echo "<pre>";
print_r($arr);