当前位置:首页 > PHP

php实现快速排序

2026-01-28 20:46:01PHP

快速排序原理

快速排序是一种分治算法,通过选择一个基准元素将数组分成两部分,一部分小于基准,另一部分大于基准,递归地对子数组进行排序。

php实现快速排序

PHP实现代码

function quickSort(array $array): array {
    if (count($array) <= 1) {
        return $array;
    }

    $pivot = $array[0];
    $left = $right = [];

    for ($i = 1; $i < count($array); $i++) {
        if ($array[$i] < $pivot) {
            $left[] = $array[$i];
        } else {
            $right[] = $array[$i];
        }
    }

    return array_merge(quickSort($left), [$pivot], quickSort($right));
}

代码说明

基准元素选择数组第一个元素$array[0],遍历剩余元素将其分配到左右两个子数组。递归调用quickSort处理子数组,最后合并左数组、基准元素和右数组。

优化建议

对于大型数组,可采用随机选择基准或三数取中法优化性能。PHP的usort函数内部也使用快速排序,可直接调用:

usort($array, function($a, $b) {
    return $a <=> $b;
});

时间复杂度

平均时间复杂度为O(n log n),最坏情况(如已排序数组)会退化到O(n²)。空间复杂度为O(log n)因递归调用栈。

php实现快速排序

标签: 快速php
分享给朋友:

相关文章

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

php实现图片上传

php实现图片上传

实现图片上传的基本步骤 创建HTML表单用于文件上传,表单需设置enctype="multipart/form-data"属性,确保文件数据正确传输。 <form action="upload…

php实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 //…

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE T…

php实现排序

php实现排序

PHP 数组排序方法 PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法: 按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用): $num…