• 技术文章 >后端开发 >php教程

    简单的理解PHP冒泡排序

    韦小宝韦小宝2018-03-06 13:38:39原创997
    PHP中涉及到多种排序,而冒泡排序应该是我用的最闹心的一种排序,弄了老半天还是没太懂,这篇简单讲述PHP冒泡排序的很适合像我一样不太懂冒泡排序的东西看哦!

    1.冒泡算法

    看了几篇关于冒泡的文章,但是总是对于每次循环的边界值思路讲的比较笼统。

    不是很容易被新手记住,我自己平时也是硬记下来的。

    但是对于算法,硬记,时间长了还是容易忘记,所以自己写了一次,把每次思路尽量写下来,便于理解,理解了容易加深映像,不容易忘记了。

    冒泡算法,核心就是

    1.循环比对 每次比对相邻2个数组的大小,然后把最大的数组放到后面,这样所有比对循环一次,就会把数组中最大的数放到数组最后

    2. 然后重复循环(重复上面的比对循环):此时循环的时候 最后一个值是不需要参加循环了,因为已经确定是最大的那个了。也就是说,重复循环,比对数组越来越少。最终只剩一个数组元素了。循环结束

    代码层看:

    $arr=array(5,4,3,6,7,1,2,10,8,9);

    先从两两比对开始看

    if($arr[$i]>$arr[$i+1]){//相邻比较 这个应该比较容易理解吧
            $tem=$arr[$i];
            $arr[$i]=$arr[$i+1];
            $arr[$i+1]=$tem;
        }

    以上代码就是比对2个数组相邻的值大小,大的放后面。可以看出来 $i 最大就是数组索引前一位的,否则 $arr[$i+1]不存在了,无法比较。也就是说 $i<count($ar)-1;$i初始值为0

    先从内层比对循环开始看

    一般for循环 这么写

    for($i=0;$i<$xx;$i++){
        if($arr[$i]>$arr[$i+1]){//相邻比较 这个应该比较容易理解吧
            $tem=$arr[$i];
            $arr[$i]=$arr[$i+1];
            $arr[$i+1]=$tem;
        }
    } 

    上面思路说了,每次比对循环都是从开头第一个元素开始 所以$i 起始值为0, 重复循环一次,下次循环就少比对一个元素。这里$xx要越来越小; 那这个$xx怎么确定呢?

    $xx第一次循环值是多少 ?上面两两比对得出结论 count($ar)-1

    $xx 最后一次值该是多少呢?上面两两比对得出结论 是1。

    也就是说 $xx 为 count($arr)-$k $k是累加的 比对循环可改为(重复循环每循环一次)

    for($i=0;$i<count($arr)-$k;$i++){
        if($arr[$i]>$arr[$i+1]){//相邻比较
            $tem=$arr[$i];
            $arr[$i]=$arr[$i+1];
            $arr[$i+1]=$tem;
        }
    } 

    再看这个$k 想想这个$k不就是随着重复循环在累增的吗? 把重复循环代码加上如下

    我们再来看下$k是怎么确定边界值的 上面说了, $xx 边界值是 count($arr)-1 到 1 已经定义 那么数学算法 $k边界值也就出来了 为 1到 count($arr)-1

    写入到循环里也就是 $k=1;$k<count($arr);$k++了。

    整理下就是

    for($k=1;$k<count($arr);$k++){
        for($i=0;$i<count($arr)-$k;$i++){ 
            if($arr[$i]>$[$i+1]){
                $temparr= $arr[$i];
                $arr[$i] =$arr[$i+1];
                $arr[$i+1] = $temparr;
            }
        }
    }

    希望大家可以看的懂,还是多练练比较好,有的时候我们不明白的知识,自己多写两遍写着写着就懂了!

    php入门到就业线上直播课:查看学习

    以上就是简单的理解PHP冒泡排序的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:php 排序 冒泡
    上一篇:完全掌握php命名空间 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 工具包分享:PHP实现滑块验证图片• PHP中的SimpleXML处理_PHP教程• 通过PHP修改Linux或Unix口令的方法分享_PHP教程• PHP header函数分析详解_PHP教程• php学习笔记 面向对象的构造与析构方法_PHP教程
    1/1

    PHP中文网