冒泡排序法

定义:

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

算法原理:

①比较相邻的元素,如果第一个比第二个大,那么就交换这两个元素。
②对每一对相邻的元素做同样的操作,从第一对开始到最后一对结束,那么最后的元素应该会是最大的数。
③除了最后一个元素外,针对其他的元素重复以上的步骤。
④对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较为止。
以数组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 

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一.什么叫冒泡排序法? 比较相邻的元素,如果第一个比第二个大,就交换他们两个的位置,然后继续往下找 二.两种冒泡排...
    Mr_欢先生阅读 4,715评论 2 10
  • 冒泡排序的基本思想是:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。 例如我们需要将12 35 99...
    Leon_hy阅读 371评论 0 1
  • python排序算法之冒泡排序 首先说一下冒泡排序原理: 冒泡排序(Bubble Sort),是一种计算机科学领域...
    birdhsy阅读 146评论 0 0
  • 用途: 冒泡排序法是一种对数组元素进行排序的算法。 [2,3,4,1,5]=>[1,2,3,4,5] [2,3,...
    懵智的大仁哥阅读 774评论 0 1
  • 算法描述 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,...
    xieys阅读 1,258评论 2 3