php实现基数排序
2016-01-20 13:58
639 查看
php实现基数排序
在百度上查了一下资料,然后又听了一下关于这个的课,感觉不算是原创的吧,因为好多代码的思想都是看别人的。整个代码写了一个多小时,php果然是一个很强大的语言啊,以前都是用c写这类东西,现在突然转到php了,感觉突然还有些不习惯。家里没有暖气,手都快冻僵了,好了,粘代码,暖手。
<?php
for($i=0;$i<500;$i++)
$arr[$i]=rand(0,10000);
printArr($arr);
echo "<hr>";
function base_sort(&$arr){
$len=count($arr);
$max=0;
$cnt=0;
$arr_=array();
for($i=0;$i<$len;$i++) //获取数组中的最大值
if($arr[$i]>$max)
$max=$arr[$i];
while($max/10!=0){ //获取最大值一共有多少位,以便于以后决定进行多少次入桶和出桶
$max=(int)$max/10;
$cnt++;
}
$cnt--;
for($i=0;$i<$cnt;$i++){
$temp=pow(10,$i);
for($j=0;$j<$len;$j++){ //将每一个元素进行入桶
$a=$arr[$j]/$temp%10;
$arr_[$a][]=$arr[$j];
}
for($arr_index=0,$k=0;$k<10;$k++){ //将每一个元素进行出桶,并将他们进行合并
for($j=0;$j<count($arr_[$k]);$j++){
if(!empty($arr_[$k])){
$arr[$arr_index++]=$arr_[$k][$j];
}
}
}
unset($arr_);
}
}
base_sort($arr);
printArr($arr);
function printArr($arr){
for($i=0;$i<count($arr);$i++)
echo ' '.$arr[$i];
echo "\n";
}
?>
相关文章推荐
- YII2自定义公共方法
- MyBatis调用存储过程,含有返回结果集、return参数和output参数
- php类型转换
- ThinkPHP生成静态页buildHtml方法
- PHP常用正则表达式汇总
- php常量,预定义常量,魔术常量及基本数据类型
- WindowsServer2003搭建FTP服务器
- php基本语法,变量,预定义变量及表单传值
- php多进程小实例
- php实现计数排序
- CodeIgniter配置之database.php用法实例分析
- vsftpd 500
- 分类或检索 评价指标FRR, FAR, TPR, FPR, ROC curve, ACC, SPC, PPV, NPV
- PHP计算上个月的开始时间和结束时间戳
- PHP 字符串分割 explode 与 str_split 函数
- PHP获取windows登录用户名的方法
- EditPlus仿Sublime配色方案(三种任你选择)
- php获取文件夹下面的文件列表和文件夹列表
- 从phpMyAdmin批量导入Excel内容到MySQL
- AJAX学习笔记(四)——HTPP请求原理