您的位置:首页 > 编程语言 > PHP开发

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

}

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: