PHP实现快速排序

快速排序属于交换排序,是一种不稳定排序,平均时间复杂度为
O(nlog2^n),最好状况时间复杂度为O(nlog2^n),最坏状况时间复杂度为O(n^2)php

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

    $array = [1, 3, 5, 18, 9, 2, 4, 6, 5, 0, 10, 29, 15];
    print_r(quickSort($array));

个人博客即将搬运同步至腾讯云+社区,邀请你们一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2pegbhfy77y80数组

相关文章
相关标签/搜索