您的位置:首页 > 其它

算法学习--希尔和快速排序

2014-02-18 16:40 344 查看
<?php
//希尔派讯
function scheer(array $array){
$total=$grp=count($array);

while ($grp>1){
$grp=ceil($grp/2);
do{
$p=0;
for($j=0;$j+$grp<=$total-1;$j++){
if ($array[$j]>$array[$j+$grp]){
$tmp=$array[$j];
$array[$j]=$array[$j+$grp];
$array[$j+$grp]=$tmp;
$p=1;
}
}
}while ($p!=0);
}
var_dump($array);
}

//快速排序
function quicksort($array,$frist,$last){

if($frist<$last){
$i=$frist;
$j=$last+1;
$num=$array[$frist];
do{
do {
$i++;
}while (!($num<=$array[$i]||$i==$last));
do {
$j--;
}while (!($num>=$array[$j]||$j==$frist));
if($i<$j){
$tmp=$array[$i];
$array[$i]=$array[$j];
$array[$j]=$tmp;
}else{
$tmp=$array[$frist];
$array[$frist]=$array[$j];
$array[$j]=$tmp;
break;
}
}while (1);
quicksort($array, $frist, $j-1);  //前半部分
quicksort($array, $j+1, $last);    //后半部分
}else{
var_dump($array);
}
}

//函数运用

$array=array(58,56,49,78,26,46,39,42,16,84,96);
//scheer($array);
quicksort($array, 0, (count($array)-1));
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: