• PHP基础之排序


    前言

    之前简单介绍了流程控制,函数,数组等。有兴趣的可以看看。
    PHP入门之类型与运算符
    PHP入门之流程控制
    PHP入门之函数
    PHP入门之数组
    接下来介绍一下排序,排序是将一组数据,依指定的顺序进行排列的过程。常用的排序方法有冒泡法,选择排序法,插入排序法。

    冒泡排序法

    思想:
    它重复走过要排序的元素列,依次比较两个相邻的元素,如果顺序错误就把它们交换过来,直到没有需要交换的为止。
    代码案例:

    <?php
    #冒泡排序
    $myarr=array(4,3,9,1,6,23.5);
    function bubbleSort (&$myarr){       
        $temp=0;   #N个数排序,要排N-1次。外层控制循环多少趟
        for ($i=0;$i<count($myarr)-1;$i++){
             #控制每一趟循环的次数。
            for ($j=0;$j<count($myarr)-1-$i;$j++){
                if ($myarr[$j]>$myarr[$j+1]){
                    $temp=$myarr[$j];
                    $myarr[$j]=$myarr[$j+1];
                    $myarr[$j+1]=$temp;
                }
            }
        }
    
    }
    bubbleSort($myarr);
    print_r($myarr);  #打印数组
    ?>
    

    输出结果为:
    Array ( [0] => 1 [1] => 3 [2] => 4 [3] => 6 [4] => 9 [5] => 23.5 )

    选择排序法

    思想:
    假设第一个为最小(大)元素,依次比较,如果错误,交换顺序,找到未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
    代码案例:

    <?php
    #选择排序
    $myarr=array(4,3,9,1,6,23.5);
    
    function selectionSort (&$myarr){    
        $temp=0;
        for ($i=0;$i<count($myarr)-1;$i++){
            #将第一个值认为是最小的值
            $minval=$myarr[$i];
            #记录最小值的下标
            $minindex=$i;
            for ($j=$i+1;$j<count($myarr);$j++){
                if ($minval>$myarr[$j]){
                    $minval=$myarr[$j];
                    $minindex=$j;
                }
            }
            $temp=$myarr[$i];
            $myarr[$i]=$myarr[$minindex];
            $myarr[$minindex]=$temp;
        }
    }
    selectionSort($myarr);
    print_r($myarr);    #打印数组
    ?>
    

    输出结果:
    Array ( [0] => 1 [1] => 3 [2] => 4 [3] => 6 [4] => 9 [5] => 23.5 )

    插入排序

    思想:
    插入排序就像我们玩扑克牌,右手为乱排的,我们一张张查看,为它找合适的位置插入到左手的有序牌中。
    插入排序是指在待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的。按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序。
    代码案例:

    <?php
    #插入排序
    $myarr=array(4,3,9,1,6,23.5);
    
    function insertSort (&$myarr){                
        for ($i=1;$i<count($myarr);$i++){
            #这是要插入的数
            $insertval=$myarr[$i];
            #这是和插入的数进行比较
            $insertindex=$i-1;
                  #满足条件说明我们还没有找到合适的位置
            while ($insertindex>=0 && $insertval<$myarr[$insertindex]){
                $myarr[$insertindex+1]=$myarr[$insertindex];
                $insertindex--;
    
            }
            #插入(给$insertval找到合适的位置)
            $myarr[$insertindex+1]=$insertval;
        }
    }
    
    insertSort($myarr);
    print_r($myarr);
    ?>
    

    输出结果:
    Array ( [0] => 1 [1] => 3 [2] => 4 [3] => 6 [4] => 9 [5] => 23.5 )

    小结

    简单介绍了一下常用的三种排序方法,希望对大家有所帮助。

  • 相关阅读:
    (转载)Android xml资源文件中@、@android:type、@*、?、@+引用写法含义以及区别
    Android事件分发和消费机制(转载)
    Android动画及滑动事件冲突解决(转载)
    写在学习Oracle之前
    laragon yii
    ubuntu使用bower install问题汇总
    LNMP架构下访问php页面出现500错误
    form表单提交无页面刷新(非js)
    Firefox浏览器无法安装插件的解决
    完美解决 Ubuntu 下 Sublime Text 2配置搜狗拼音输入法
  • 原文地址:https://www.cnblogs.com/lxfweb/p/13447650.html
Copyright © 2020-2023  润新知