php中的递归技术

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);


结果截图:


11811369-a5cbeb2f944e6132.PNG

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));


结果截图:


11811369-21e770229a8c9cd6.PNG

猜你喜欢

转载自blog.csdn.net/weixin_33841503/article/details/87251118