冒泡排序法

作者: 面朝大海春暖花开_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 

相关文章

  • 冒泡排序法C

    xcode冒泡排序法 下载冒泡排序。

  • 各种排序方法

    冒泡排序法 选择排序法 链表排序法 qsort()函数排序法

  • 算法-冒泡排序

    算 法:冒泡排序算法时间复杂度: 冒泡排序算法概述 冒泡排序伪代码 冒泡排序实现 冒泡排序算法概述 冒泡排...

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • PHP四种基础算法详解

    需求:分别用 冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中 的值按照从小到的顺序进行排序。 1、冒泡...

  • 排序算法篇_快速排序法

      快速排序(Quick Sort)法和冒泡排序法类似,都是基于交换排序思想的。快速排序对冒泡排序法进行了改进,从...

  • iOS常见算法

    升序算法:用冒泡排序法 选择排序法 快速排序

  • 3种排序

    冒泡排序 插入排序 快速排序法

  • 第2天

    题目:对10个数进行排序 分析:可以采用冒泡排序法,也可以使用选择排序法 程序1:冒泡排序法 #include i...

  • js 常见排序算法(快速排序,选择排序等)

    快速排序法 选择排序 插入排序 冒泡排序

网友评论

    本文标题:冒泡排序法

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