您现在的位置是:网站首页>>PHP>>php

php 数组排序

发布时间:2018-09-10 11:12:47作者:wangjian浏览量:329点赞量:0

    一:冒泡排序

    基本思想

    image.png

    例:

    $arr = [1,-5,0];
            $temp = 0;
            //外层循环,只要确定排好n-1个数,则最后一个数自然排好了
            for($i=0;$i<count($arr)-1;$i++){
                //每次进行一次大循环时,最大数已经在最后了,则下次循环则不用再比较已经排好的数
                for($j=0;$j<count($arr)-1-$i;$j++){
                    if($arr[$j]<$arr[$j+1]){
                        $temp = $arr[$j];
                        $arr[$j] = $arr[$j+1];
                        $arr[$j+1] = $temp;
                    }
                }
            }
            var_dump($arr);

    二:选择排序

    基本思想

    image.png

    例:

    function selectSort(&$arr) 
    {
         $temp=0;
         for($i=0;$i<count($arr)-1;$i++){
             $minVal = $arr[$i]; //假设$i就是最小值
             $minIndex = $i; //记录认为最小值的小标
             for($j=$i+1;$j<count($arr);$j++){
                 if($minVal > $arr[$j]){
                     $minVal = $arr[$j];
                     $minIndex = $j;
                 }
             }
             $temp = $arr[$i];
             $arr[$i] = $arr[$minIndex];
             $arr[$minIndex] = $temp;
         }
    }
    $arr = array(0,5,-1);
    selectSort($arr);

    三:插入排序

    基本思想

    image.png

    例:

    function insertSort(&$arr)
    {
        //先默认下表为0这个数已经有序
        for($i=1;$i<count($arr);$i++){
            //insertVal是准备插入的数
            $insertVal = $arr[$i];
            //准备先和insertIndex比较
            $insertIndex = $i-1;
            while($insertIndex>=0 && $insertVal<$arr[$insertIndex]){
                //把较大的数后移
                $arr[$insertIndex+1] = $arr[$insertIndex];
                $insertIndex--;
            }
            //插入(这时为$indexVal找到适当的位置了)
            $arr[$insertIndex+1] = $insertVal;
        }
    }


上一篇:js 实现省市区三级联动

下一篇:Yii 缓存

0 +1