<?php
// 冒泡排序
$a = [32,45,56,3,23,54,323];
function maopao($a){
for($i=0;$i<count($a);$i++){
for($y=$i+1;$y<count($a);$y++){
if($a[$i] > $a[$y]){
$tmp = $a[$i];
$a[$i] = $a[$y];
$a[$y] = $tmp;
}
}
}
return $a;
}
echo "<pre>";
var_dump(maopao($a));
// 递归 - 冒泡排序
// 思路 - 拿出第一个数跟其他数比较,大于小于次数分两边,自己在中间
// (1) 递归就是在过程或函数里调用自身。 ...
// (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 ...
// (3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。 ...
// (4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。 ...
$arr2 = $a;
function oo2($arr2){
$num = count($arr2);
if($num <= 1){return $arr2;} //递归出口
$one = $arr2[0];
$arr_left = array();
$arr_right = array();
for ($i=1; $i < $num; $i++) {
if($one > $arr2[$i]){
$arr_right[] = $arr2[$i];
}else{
$arr_left[] = $arr2[$i];
}
}
return array_merge(oo2($arr_right),array($one),oo2($arr_left));
}
print_r(oo2($arr2));
结果
Array
(
[0] => 3
[1] => 23
[2] => 32
[3] => 45
[4] => 54
[5] => 56
[6] => 323
)
Array
(
[0] => 3
[1] => 23
[2] => 32
[3] => 45
[4] => 54
[5] => 56
[6] => 323
)