快速排序算法

<?php
    function quickSort($arr){
        $count=count($arr);
        if($count>1){
            //以第一个数作为基准
            $mark=$arr[0];
            //定义两个空数组来存放基准数两边的数据
            $right=array();
            $left=array();
            //开始循环比较,从大到小排序
            for ($i = 1; $i < $count; $i++) { 
                if($mark>$arr[$i]){
                    $right[]=$arr[$i];
                }else{
                    $left[]=$arr[$i];
                }
            }
            //一趟快速排序结束

            //递归快速排序
            $right=quickSort($right);
            $left=quickSort($left);

            //把最后的结果组合为一个数组
            $result=array_merge($left,array($mark),$right);
        }else{
            $result=$arr;
        }

        //返回结果
        return $result;
    }

    //定义一个数组
    $arr=array(8,2,1,5,7,6,4,9,3);

    $result=quickSort($arr);

    var_dump($result);

 

posted on 2016-12-06 09:39  Mr.风的影子  阅读(139)  评论(0编辑  收藏  举报

导航