简单讲解一下冒泡排序的原理 及代码

冒泡排序是一种简单的排序算法,通过不断比较相邻元素并交换位置来达到排序的目的。在一轮比较中,最大(或最小)的元素会被逐步推向数组的末尾。对于一个包含n个元素的数组,冒泡排序需要进行n-1轮比较,每轮比较的次数从n-1递减到1。以下是冒泡排序的代码实现。
摘要由CSDN通过智能技术生成

           说到冒泡  排序,其实原理很简单,

   比如将

 $arr = [1, 22, 11, 33, 42, 45];
  数组内的元素按升序排序

   算法原理:将前后每两个数进行比较,较大的数往后排,一轮下来最大的数就排到最后去了。然后再进行第二轮比较,第二大的数也排到倒数第二了,以此类推:

  第一轮比较:

  第一次比较:1,12,11,33,48,45第一个数不大于第二个数,不调换位置

  第二次比较:1,12,11,33,48,45第二个数大于第三个数,调换位置

  第三次比较:1,11,12,33,48,45个数不大于第个数,不调换位置

  第次比较:1,11,12,33,48,45个数大于第个数,调换位置

  。。。。。以此类推

  第六次比较:1, 22, 11, 33, 45, 48第五个数大于第六个数,调换位置

  上面就进行完了第一轮比较将最大的一个数字排到了最后面。比较次数5次

  第二轮比较:

  跟第一轮比较一样,但我们可以发现,最后一个数字我们不需要比较,因为那是最大的数

  比较次数4次

  第三轮比较:

  比较次数3次

  。

  。

  。

  。

第6轮比较:

  比较次数1次

  从上面的分析我们可以看出我们排6个数需要比较5轮,每一轮比较由5次递减到1次

  代码:


$arr = [1, 22, 11, 33, 48, 45];
$k = 0;//循环多少次
$count = count($arr);//计算数组长度
for ($i = 1; $i < $count; $i++) {//循环的次数
    for ($j = 0; $j < $count - $i; $j++) {//循环的东西
        $k++;//循环多少次
        if ($arr[$j] > $arr[$j + 1]) {
            list($arr[$j], $arr[$j + 1]) = [$arr[$j + 1], $arr[$j]];
        }
        echo $k;
        echo "<br>";
    }
}
print_r($arr);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值