算法实现-冒泡排序

冒泡排序

  • 介绍:

    冒泡排序是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。

  • 算法步骤:

    比较相邻的元素。如果第一个比第二个大,就交换他们两个。

    对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

    针对所有的元素重复以上的步骤,除了最后一个。

    持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

  • 动图演示:

    img

  • 进一步说明:

    • 代码差不多就是两层for循环,在内层for循环里加个if语句用来交换数据
    • 外层for次数 = 键值对个数 - 1;
    • 外层循环一次后就可以确定一个这次循环的最大的数(如上图)
    • 内层for循环次数 = 键值对个数 - 上层循环的次数($i) - 1;
    • 内层循环就是一次外层循环数比较的次数
    • if里边弄个$tmp变量来用于交换
  • 代码示例:

    <?php
    $num = [3, 1, 67, 12, 56, 98, 12, 2, 6, 34];
    $len = count($num);
    // 外层循环控制次数
    for($i = 0; $i < $len - 1; $i ++) {
        for($j = 0; $j < $len -$i - 1; $j ++) {
            // 内层循环控制一次循环时比较的次数
            if($num[$j] > $num[$j +1]) {
                $tmp = $num[$j + 1];
                $num[$j + 1] = $num[$j];
                $num[$j] = $tmp;
            };
        };
    };
    var_dump($num);
    

相关材料出处:

https://www.runoob.com/w3cnote/bubble-sort.html

posted @   VarFa  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示