一些排序
关键词:PHP,Phzzy
Phzzy:
一些排序
复制PHP内容到剪贴板PHP代码:
<?php
$array = array();
for($i = 0 ; $i < 20 ; )
{
$temp = floor( rand(1,1000) );
if(!in_array($temp , $array , true))
{
$array[$i] = $temp;
$i++;
}
}
print_num($array , 'O' , 0); // 输出原始数据
insertSort($array); // 普通插入排序
BInsertSort($array); // 折半插入排序
/////////////////////////////////////////////////
/////////////////////////////////////////////////
// 普通插入排序
function insertSort($a)
{
list ($start_time, $decimal) = explode(' ', microtime());
$start_time += $decimal;
$array = array(0 , $a[0] , 9999);
for($i = 1 ; $i < count($a) ; $i++)
{
$temp = $a[$i];
for($j = 1 ; $j < count($array) ; $j++)
{
if( $temp >= $array[$j - 1] && $temp < $array[$j] )
{
// move array to back
for($k = count($array) ; $k > $j ; $k--)
{
$array[$k] = $array[$k - 1];
}
// insert the new item
$array[$j] = $temp;
break;
}
}
}
array_shift($array);
array_pop($array);
list($end_time, $decimal) = explode(' ', microtime());
$end_time += $decimal - $start_time;
print_num($array , 'InsertSort' , $end_time);
}
// 折半插入排序
function BInsertSort($a)
{
list ($start_time, $decimal) = explode(' ', microtime());
$start_time += $decimal;
$array = array(0 , $a[0] , 9999);
for($i = 1 ; $i < count($a) ; $i++)
{
$temp = $a[$i];
$low = 0;
$high = count($array) - 1;
while($low <= $high)
{
$m = intval(($low + $high + 1) / 2);
if( $temp >= $array[$m - 1] && $temp < $array[$m] )
{
break;
}
if( $temp >= $array[$m] )
{
$low = $m;
}
else
{
$high = $m;
}
}
// move array to back
for($k = count($array) ; $k > $m ; $k--)
{
$array[$k] = $array[$k - 1];
}
// insert the new item
$array[$m] = $temp;
}
array_shift($array);
array_pop($array);
list($end_time, $decimal) = explode(' ', microtime());
$end_time += $decimal - $start_time;
print_num($array , 'BInsertSort' , $end_time);
}
//////////////////////////////////////////////////
//////////////////////////////////////////////////
function print_num($array , $prefix , $time)
{
echo $prefix . '(' . substr($time, 0, 8) . 's): ';
foreach($array as $v)
{
echo $v . ' ';
}
echo "<hr />"n";
}
[ 本帖最后由 Phzzy 于 2006-11-6 22:54 编辑 ]
hy0kl:
此帖怎样没有后话......
leehui1983:
算法微微有点弱
roast:
一句话,代码质量有待加强....:(