1.直接插入排序(插入排序)
function InsertSort($arr, $n)
{
for ($i = 1; $i < $n; $i ++) {
$t = $arr[$i];
for ($j = $i - 1; $j >= 0 && $t < $arr[$j]; $j --)
$arr[$j + 1] = $arr[$j];
$arr[$j + 1] = $t;
}
return $arr;
}
2.折半插入排序 (插入排序)
function Binsort($arr ,$n){
for ($i = 1; $i < $n; $i++)
{
$t = $arr[$i];
$low=0;
//有序数列的终点
$high=$i-1;
//待插入元素
$t=$arr[$i];
while ($high >= $low)
{
$mid = floor (($low + $high) / 2);
if ($t < $arr[$mid])
{
$high = $mid - 1;
}
else
{
$low = $mid + 1;
}
}
for ($j = $i - 1; $j >= $low; $j--)
$arr[$j + 1] = $arr[$j];
$arr[$low] = $t;
return $arr;
}
}
3.希尔排序(插入排序)
function shell_sort($array){
$count=count($array);
if($count<=1){
return $array;
}
for($h=floor($count/2);$h>0;$h=floor($h/2)){
for($i=$h;$i<$count;$i++){
$temp=$array[$i];
for($j=$i-$h;$j>=0 && $temp<$array[$j];$j-=$h){
$array[$j+$h]=$array[$j];
}
$array[$j+$h]=$temp;
}
}
return $array;
}