中易网

PHP快速排序法不太懂,求指教。。。

答案:1  悬赏:30  
解决时间 2021-04-10 09:59
<?php $arr=array(6,0,4,1,-1,9,6,7); function quickSort($str) { if(count($str)<=1) return $str;//如果个数不大于一,直接返回 $key=$str[0];//取一个值,稍后用来比较; $left_arr=array(); $right_arr=array(); for($i=1;$i<count($str);$i++){//比$key大的放在右边,小的放在左边; if($str[$i]<=$key) $left_arr[]=$str[$i]; else $right_arr[]=$str[$i]; } $left_arr=quicksort($left_arr);//进行递归; $right_arr=quicksort($right_arr); return array_merge($left_arr,array($key),$right_arr);//将左中右的值合并成一个数组 ; } print_r(quickSort($arr)); ?> 下面这一段递归不怎么懂,是怎么把他们分开后又进行组合的,简单通俗点 $left_arr=quicksort($left_arr);//进行递归; $right_arr=quicksort($right_arr);
最佳答案
直接用sort函数排序不就完了,写这么多代码作什么呢?
sort($arr);
再输出结果看看,已经就排好了。
<?php
$arr=array(5,7,2,10,8,1);
sort($arr);
var_dump($arr);
//结果 便已经按1 2 5 7 8 10 这样排序了。
//如果非要学习递归的排序,见下面代码

function sorttest($ar){
$tmparr=array();
if(count($ar)<=1) return $ar;
$tmp=array_rand($ar);
foreach($ar as $v){
if($v>$ar[$tmp]){
$right[]=$v;
}else{
$left[]=$v;
}
}
if(!empty($left)){
         if(count($left)<=1){
          $tmparr[]=$left[0];
         }else{
          $tmparr=array_merge($tmparr,sorttest($left)); 
         }
}
if(!empty($right)){
    if(count($right)<=1){
     $tmparr[]=$right[0];
    }else{
       $tmparr=array_merge($tmparr,sorttest($right));
        }
}
return $tmparr;
}

?>居然有朋友在评论里要求,就满足了这位朋友的需求。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如果没有量筒和量杯怎样测液体的体积
莆田节日习俗作文700字有眉批
请问湖南湘潭易俗河的邮编号多少
听说月亮上面有棵树?是真的???
QQ下载不了,总是提取文件失败。怎么办?
永春堂伊妮莎莉丽水NO.8地址有知道的么?有点
2015这两年广西田阳的房价会不会涨
2000除以8减12乘9可以同时计算的是
香港人蔬菜吃哪些品种
唯美的句子。
没有心跳的感觉属于是爱情吗
离开一个你爱的人一心疼吗?
QQ会员经验值能积累吗?
再过几天就要阶段考了,肾虚,学习效率很低。
蛋黄南瓜是水煮还是油炸
推荐资讯
Win7连接XP的远程桌面,Win7应该开什么服务,
DNF時裝问题
学生意外险钢板能报吗
5cm的草龟一年能长多少啊?
长辈爱上晚辈的小说
从甪直镇去苏州工业园区苏虹中路200号出口加
我的电脑打不起QQ游戏的新台球
韩剧《善良的男人》中所有歌名
哪些品牌机可以短信加密
索尼的数码相机怎么样
为什么我觉得热,可是身上摸起来冰凉,手脚也
黄家驹唱过一无所有吗?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?