PHP实现快速排序

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

<?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

转载于:https://www.cnblogs.com/clivewang/p/9869614.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值