1.快速排序:
function f($num,$arr,$start,$end){
if($start <= $end){
$mid = floor(($start + $end)/2) ;
if($arr[$mid] > $num){ //左边
f($num,$arr,0,$mid-1);
}elseif($arr[$mid] < $num){ //右边
f($num,$arr,$mid+1,$end);
}else{
echo "{$num}存在于数组的位置为$mid";
}
}else{
echo "数组中不存在$num";
}
}
$arr = [2,4,5,7,9,11,14,16,19];
f(2,$arr,0,count($arr)-1);
echo "<hr>";
f(11,$arr,0,count($arr)-1);
echo "<hr>";
f(19,$arr,0,count($arr)-1);
结果截图:
2.快速排序
function kuaiSort($arr){
if(count($arr) <= 1){
return $arr;
}
if(!is_array($arr)){
return false;
}
$left = array();
$right = array();
$key = $arr[0];
for($i = 1 ; $i < count($arr) ; $i++){
if($arr[$i] < $key){
array_push($left,$arr[$i]);
}else{
array_push($right,$arr[$i]);
}
}
$left = kuaiSort($left);
$right = kuaiSort($right);
return array_merge($left,array($key),$right);
}
$arr = [2,22,5,10,18,1,4,7];
var_dump(kuaiSort($arr));
结果截图:
网友评论