一、先定义一个数组
$arr = [1, 43, 54, 62, 21, 66, 32, 78, 36, 76, 39, 2];
二、代码实现冒泡排序
function bubbleSort($arr){ $count=count($arr); for ($i=1;$i<$count;$i++){ for ($k=0;$k<$count-$i;$k++){ if($arr[$k]>$arr[$k+1]){ $temp=$arr[$k+1]; $arr[$k+1]=$arr[$k]; $arr[$k]=$temp; } } } return $arr; } $arr = bubbleSort($arr); print_r($arr);
三、效果截图
这样一个冒泡排序就完成啦
PHP实现二分查找
// 非递归 // $target是要查找的目标 $arr是已经排序好的数组 function binary(&$arr,$low,$top,$target){ while($low <= $top){ //由于php取商是有小数的,所以向下取整,不过也可不加,数组也会取整 $mid = floor(($low+$top)/2); if($arr[$mid]==$target){ return $mid; }elseif($arr[$mid]<$target){ $low = $mid+1; }else{ $top = $mid-1; } } return -1; } $arr = array(1,3,9,23,54); echo binary($arr, 0, sizeof($arr), 23); 点击并拖拽以移动
使用递归实现二分查找
// 递归 function binaryRecursive(&$arr,$low,$top,$target){ if($low<=$top){ $mid = floor(($low+$top)/2); if($arr[$mid]==$target){ return $mid; }elseif($arr[$mid]<$target){ return binaryRecursive($arr,$mid+1,$top,$target); }else{ return binaryRecursive($arr,$low,$mid-1,$target); } }else{ return -1; } } $arr = array(1,3,9,23,54); echo binaryRecursive($arr, 0, sizeof($arr), 9);
此时,这样的一个二分查找就好了。