关于php快速排序代码执行过程的问题

WBOY
發布: 2016-07-06 13:54:01
原創
1055 人瀏覽過

关于php快速排序代码执行过程的问题

问题是这样的:
为什么这里打印$left会有array empty、array 0 => int 6这两个数组出现啊?按理说递归调用到array 0 => int 1这个数组之后就直接执行71行的return $arr了啊,怎么还会有之后的两个数组呢?

源代码如下:

<code>$arr = array(6,3,8,6,4,2,9,5,1);

function quick_sort($arr){
    if(!is_array($arr)) return false;
    
    $length = count($arr);
    if($length </code>
登入後複製
登入後複製

回复内容:

关于php快速排序代码执行过程的问题

问题是这样的:
为什么这里打印$left会有array empty、array 0 => int 6这两个数组出现啊?按理说递归调用到array 0 => int 1这个数组之后就直接执行71行的return $arr了啊,怎么还会有之后的两个数组呢?

源代码如下:

<code>$arr = array(6,3,8,6,4,2,9,5,1);

function quick_sort($arr){
    if(!is_array($arr)) return false;
    
    $length = count($arr);
    if($length </code>
登入後複製
登入後複製

你dump的是left,假如数组是[1,3,3]就是空啊,[2,3,1]就是一个啊

$arr = array(6,3,8,6,4,2,9,5,1);
$result = array();
function aaa($arr,$result){

<code>$min = min($arr);
array_push($result, $min);
$key=array_search($min ,$arr);
array_splice($arr,$key,1);
if(count($arr)){
    aaa($arr,$result);
}else{
    echo json_encode($result);
    exit;
}</code>
登入後複製

}
aaa($arr,$result);

用这个思路感觉更简单

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!