24. 排序

来源:互联网 发布:windows返回快捷键 编辑:程序博客网 时间:2024/05/16 11:46

排序:
这里写图片描述
这里写图片描述

冒泡排序:
这里写图片描述
这里写图片描述

$arr = array(0,5,-1,90,-100,34.5,697,-39);    //这是一个中间变量    $temp = 0;    //外层循环    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);

选择排序:
这里写图片描述
这里写图片描述
这里写图片描述

function selectSort(&$arr)    {        $temp = 0;        for($i=0;$i<count($arr)-1;$i++){            //假设 $i 就是最小的数            $minVal = $arr[$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,32,15,20,-9);    selectSort($arr);    var_dump($arr);

插入排序:
这里写图片描述
这里写图片描述
这里写图片描述

//插入排序法(小到大)    function insertSort(&$arr)    {        //先默认下标为0的这个数已经是有序的        for($i=1;$i<count($arr);$i++){            $insertVal = $arr[$i];            $insertIndex = $i - 1;            //如果这个条件满足,说明我们还没找到合适的位置            while($insertIndex>=0 && $insertVal<$arr[$insertIndex]){                //同时把数后移                $arr[$insertIndex+1] = $arr[$insertIndex];                $insertIndex--;            }            //插入(这是就给$insertVal找到合适位置)            $arr[$insertIndex+1] = $insertVal;        }    }    $arr = array(0,5,-1,32,15,20,-9);    insertSort($arr);    var_dump($arr);

效率:    冒泡<选择<插入
0 0