旗下导航:搜·么
当前位置:网站首页 > PHP教程 > 正文

PHP进修之插入排序的完成【php教程】

作者:搜搜PHP网发布时间:2019-11-26分类:PHP教程浏览:117


导读:本篇文章的主要内容是用PHP完成插进去排序,简朴却典范的一道算法题,不知你是不是记得了,快随小编一同回忆一下吧。  插进去排序基本思路:将数组分为两个区(已排序区和未排序区...
本篇文章的主要内容是用PHP完成插进去排序,简朴却典范的一道算法题,不知你是不是记得了,快随小编一同回忆一下吧。

  插进去排序基本思路:将数组分为两个区(已排序区和未排序区),假定数组的第一个元素处于已排序区, 第一个元素以后的一切元素都处于未排序部份。排序时用到双层轮回,外层轮回用于从未排序部份中掏出待排序元素,并逐渐减少未排序部份,内层轮回用于从已排序部份寻觅插进去位置(即不断地从已排序部份寻觅比待排序元素大的元素), 然后将较大的已排序区的元素后移,后移的终究效果是已排序区元素的末了一个元素占有待排序元素本来的位置,罢了排序区中心空出一个位置),末了将待排序元素插进去元素后移以后留下的空位。

//插进去排序
function insert_sort($arr) {
    //猎取数组单位个数
    $count = count($arr);
    //外层轮回用于从未排序地区中掏出待排序元素
    for ($i=1; $i < $count; $i++) {
        //猎取当前须要插进去已排序地区的元素值
        $temp = $arr[$i];
        //内层轮回用于从已排序地区寻觅待排序元素的插进去位置
        for ($j=$i-1; $j >= 0; $j--) {
            //假如$arr[$i]比已排序地区的$arr[$j]小,就后移$arr[$j]
            if ($temp < $arr[$j]) {        
                $arr[$j+1] = $arr[$j];
                $arr[$j] = $temp;
            } else {
                //假如$arr[$i]不小于$arr[$j],则对已排序区无需再排序
                break;
            }
        }
    }
    return $arr;
}

$arr = array(6, 19, 26, 62, 88, 99, 18, 16, 1);
var_dump(insert_sort($arr));
  测试效果:

  

相干教程:PHP视频教程

以上就是PHP进修之插进去排序的完成的细致内容,更多请关注ki4网别的相干文章!

标签:PHP插入排序