php基础算法分享
1.php 简单算法
冒泡排序 其思路是 从左边开始,然后依次和右边的进行比较大小,如果左边的大于右边的,则进行交换位置,大的放在左边,然后依次比较,0和1比较,然后1和2比较,依次进行比较。具体方法如下;
```php
function BubblingSort($var){
$len =count($var)-1;
//第一层循环
for ($i=0;$i<$len;$i++){
//第二层循环
for ($j=0;$j<$len-$i;$j++){
//右边大于左边交换位置
if($var[$j]>$var[$j+1]){
$tmp = $var[$j];
$var[$j]=$var[$j+1];
$var[$j+1]= $tmp ;
}
}
}
return $var;
}
2.快速排序 主要思路是获取第一个值 array[0] 然后循环判断,当前值和第一个值的大小。当第一个值小于当前值,则放在left_ary中 ,当第一个值大于当前值时,则放入right_ary中。然后循环完后,在把left_ary 和right_ary中进行排序,按照顺序进行排序
最后把循环出来好 的数据,合并成新数组。
function fastSort($array){
$len = count($array);
//判断是否数组是否为空,为空的时候不进行循环 如果不加这个,数组为空会也会进行循环,浪费资源
if($len<=1){
return $array;
}
$value = $array[0];
$left_ary = $right_ary= array();
for ($i=1;$i<$len;$i++){
//判断当期值和 初始化的值的大小
if($array[$i]<=$value){
$left_ary[]=$array[$i];
}else{
$right_ary[]=$array[$i];
}
}
//轮询去排序
$left_ary = fastSort($left_ary);
$right_ary= fastSort($right_ary);
//合并数组,
return array_merge($left_ary,array($value),$right_ary);
}