• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-01-23) 12次浏览 已收录 0个评论
文章目录[隐藏]

<body>

问题是这样的:
为什么这里打印$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 <= 1) return $arr;    $left = $right = array();    for($i = 1;$i < $length;$i++){                                                        if($arr[$i] <<mark>@本文来源gaodaimacom搞#代%码@网-</mark><strong>搞代gaodaima码</strong> $arr[0]){            $left[] = $arr[$i];                                     }else{            $right[] = $arr[$i];                                               }    }    var_dump($left);    $left = quick_sort($left);    $right = quick_sort($right);    return array_merge($left,array($arr[0]),$right);}print_r(quick_sort($arr));</code>

回复内容:

<body>

问题是这样的:
为什么这里打印$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 <= 1) return $arr;    $left = $right = array();    for($i = 1;$i < $length;$i++){                                                        if($arr[$i] < $arr[0]){            $left[] = $arr[$i];                                     }else{            $right[] = $arr[$i];                                               }    }    var_dump($left);    $left = quick_sort($left);    $right = quick_sort($right);    return array_merge($left,array($arr[0]),$right);}print_r(quick_sort($arr));</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);

用这个思路感觉更简单


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于php快速排序代码执行过程的问题

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址