算法学习--希尔和快速排序
<?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)); ?>