冒泡排序法

作者: 面朝大海春暖花开_ee35 | 来源:发表于2020-09-11 12:35 被阅读0次

    定义:

    冒泡排序,顾名思义就是整个过程就像气泡一样往上升,单向冒泡排序的基本思想是(假设由小到大排序)

    算法原理:

    ①比较相邻的元素,如果第一个比第二个大,那么就交换这两个元素。
    ②对每一对相邻的元素做同样的操作,从第一对开始到最后一对结束,那么最后的元素应该会是最大的数。
    ③除了最后一个元素外,针对其他的元素重复以上的步骤。
    ④对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较为止。
    以数组array(36,25,48,12,25,65,43,57)为例,具体排序过程如下:
    初始状态:[36 25 48 12 25 65 43 57 ]
    一趟排序:[25 36 12 25 48 43 57] 65
    两趟排序:[25 12 25 36 43 48] 57 65
    三趟排序:[12 25 25 36 43] 48 57 65
    四趟排序:[12 25 25 36] 43 48 57 65
    五趟排序:[12 25 25] 36 43 48 57 65
    六趟排序:[12 25] 25 36 43 48 57 65
    七趟排序:[12] 25 25 36 43 48 57 65

    代码如下:

    function maopao($arr) {
        $len = count($arr);//计算数组长度
        for ($i =1; $i < $len; $i++) {//$i为1的原因是$len最小为1
              for ($k = 0; $k < $len - $i; $k++) {//$k为0的原因是数组的key从0开始的
                    if ($arr[$k] > $arr[$k+1]) {
                          $temp = $arr[$k];
                          $arr[$k] = $arr[$k + 1];
                          $arr[$k+1] = $temp;
                    }
              }
        }
        return $arr;
    }
    
    $arr = array(36,25,48,12,25,65,43,57);
    echo "排序前";
    foreach ($arr as $k => $v ) {
        echo $v . " "; 
    }
    echo PHP_EOL;
    echo "排序后";
    $arr = maopao($arr);
    foreach ($arr as $k => $v ) {
          echo $v . " ";
    }
    
    程序执行结果如下:
    排序前36 25 48 12 25 65 43 57 
    排序后12 25 25 36 43 48 57 65 
    
    

    相关文章

      网友评论

        本文标题:冒泡排序法

        本文链接:https://www.haomeiwen.com/subject/wswvektx.html