php算法之冒泡排序

冒泡排序思路分析:

法如其名,就是像冒泡一样,每次从数组当中冒一个最大的数出来。
比如:2,4,1    // 第一次 冒出的泡是4
           2,1,4   // 第二次 冒出的泡是2
           1,2,4   // 最后就变成这样

通过循环套循环
实现里面的循环比外面循环少一次
思路:相邻的俩数相比较,大的向后挪动一位
每次循环数组最后一位为最大值,每次循环冒出一个最大值

代码:

header('content-type:text/html;charset=utf8 ');
$arr = array(50, 2, 45, 12, 46, 47, 23, 40, 15, 60, 39, 67, 80, 34);

function maoPao($arr)
{
    $len = count($arr);
    // 设置一个空数组 用来接收冒出来的泡
    // 该层循环控制 需要冒泡的轮数
    for ($i = 1; $i < $len; $i++) {
        // 该层循环用来控制每轮 冒出一个数 需要比较的次数
        for ($k = 0; $k < $len - $i; $k++) {
            if ($arr[$k] > $arr[$k + 1]) {
                $tmp = $arr[$k + 1];
                $arr[$k + 1] = $arr[$k];
                $arr[$k] = $tmp;
            }
        }

    }
    return $arr;
}

// 调用 打印数组
print_r(maoPao($arr));

数组打印结果为:

Array
(
    [0] => 2
    [1] => 12
    [2] => 15
    [3] => 23
    [4] => 34
    [5] => 39
    [6] => 40
    [7] => 45
    [8] => 46
    [9] => 47
    [10] => 50
    [11] => 60
    [12] => 67
    [13] => 80
)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值