PHP初学者-冒泡排序
代码:
<?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));
效果:
原理图:
从上到下的解释一遍吧!
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]
这个下标。也就是说,将当前数组元素和前一个数组元素的值调换了。