PHP初学者-冒泡排序

24 篇文章 0 订阅
21 篇文章 0 订阅

代码:

<?php
echo '<h1>冒泡排序(算法)</h1>';
$arr04 = [12,32,15,6,48,52,16,95,78];
print_r($arr04);
# 这边声明一个函数,拥有一个参数。
function maopa ($arr){
    # 获取数组的长度
    $len = sizeof($arr);
    # 循环 次数为 数组的长度
    for ($i=1; $i<$len; $i++){
        # 进行数组的索引,执行次数为 数组长度减轮次 即 $len-$i
        for ($j=0; $j<$len-$i; $j++){
            # 如果 $arr[$j]的值大于$arr[$arr+1]的值,就执行如下代码
            if ($arr[$j]>$arr[$j+1]){
                # 先存储 $arr[$j]的值
                $item = $arr[$j];
                # 将$arr[$j]的这个 下标的 值赋成 $arr[$j+1]这个值
                $arr[$j] = $arr[$j+1];
                # 将$arr[$j+1]的 下标 的值 赋成 $arr $item
                $arr[$j+1] = $item;
            }

        }

    }
    return $arr;
}
echo '<pre>';
var_dump(maopa($arr04));

效果:

在这里插入图片描述

原理图:

在这里插入图片描述

原理图引用自http://www.bubuko.com/infodetail-848128.html

从上到下的解释一遍吧!

echo

echo是输出的意思,PHP和HTML代码是互通的,所以echo可以输出<h1></h1>标签。

声明数组

$arr04 = [12,32,15,6,48,52,16,95,78];,是声明数组的意思,其中[]就是短数组,当然,也就这么个名字,功能还是一样的,在PHP中有很多声明数组的方式,若感兴趣可以单独去查找,笔者在这里不做赘述了。关于数组的定义,可以看 菜鸟教程 也可以看 我写的

print_r()

print_r是用于输出数组的函数。

function

function声明函数用的关键字

function maopa ($arr)

其中 maopa是函数的名字,可以随便起的。
其中($arr)是个参数,对于模块化代码是非常有帮助的!当然,参数名也是随便起的。
接下来我们用sizeof()来获取下数组的长度,这样我们就知道要循环多少轮了。
这里$i=1的原因是获取的数组长度不是从0 开始数的,如果$i=0的话就会多进行一轮运算,会产生空值。
外层循环控制轮次,内层进行相邻数组的比较。
内层中循环条件$j=0; $j<$len-$i; $j++
外层循环每执行一轮$j的值都会重新变成0
$j运行的次数是$len-$i次,假若,$len=4,$i=2那么就是执行2次内层循环了。
接下来我们看看 if 这里的判断条件,判断两个相邻数组的值,若前一个大于后一个,则进行如下代码,反则则继续循环。
其中: $item = $arr[$j];用来存储$arr[$j]的值,注意,这里存储的是值。
接下来将$arr[$j]的下标(键)的值变为$arr[$j+1],再将之前存储的值赋给$arr[$j+1]这个下标。也就是说,将当前数组元素和前一个数组元素的值调换了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值