php算法之递归排序

<?php
function quickSort($arr) {
    if(count($arr) > 1) {
        $k=$arr[0];
        $x=array();
        $y=array();
        $_size=count($arr);
        for($i=1;$i<$_size;$i++) {
            if($arr[$i] <=$k) {
                $x[] =$arr[$i];//小的放这边
            }else{
                $y[] =$arr[$i];//大的放这边。这样子是从小到大排序,如果想从大到小返回,那么调换位置与$x[] =$arr[$i];的位置即可
            }
        }
        //得到分割看来左右两边的数据
        $x= quickSort($x);//左边的数据,对这些数据再次使用分割法排序,返回的结果就是排序后的数据

        $y= quickSort($y);//右边的数
        return array_merge($x,array($k),$y);
    }else{
        return $arr;
    }
}
print_r(quickSort([6,8,9,2,4,5]));

猜你喜欢

转载自www.cnblogs.com/zxqblogrecord/p/9986594.html