<?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));
?>