3种插入排序算法(php)

来源:互联网 发布:局域网扫描软件 编辑:程序博客网 时间:2024/05/17 07:47

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;}




0 0