【PHP】快速排序

小破孩
2022-06-23 / 0 评论 / 146 阅读 / 正在检测是否收录...

快速排序
选择一个基准元素,通常选择第一个元素或者最后一个元素。通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素。此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。

    function quicksort($arr)
    {
    //判断参数是否是一个数组
        if(!is_array($arr)) return false;
    //递归出口:数组长度为1,直接返回数组
        $length = count($arr);
        if($length<=1) return $arr;
    //数组元素有多个,则定义两个空数组
        $left = $right = array();
    //使用for循环进行遍历,把第一个元素当做比较的对象
        for($i=1; $i<$length; $i++)
        {
    //判断当前元素的大小
            if($arr[$i]<$arr[0]){
                $left[]=$arr[$i];
            }else{
                $right[]=$arr[$i];
            }
        }
    //递归调用
        $left=quicksort($left);
        $right=quicksort($right);
    //将所有的结果合并
        return array_merge($left,array($arr[0]),$right);
    }
0

评论 (0)

取消