当前位置:首页 > PHP

php实现快速排序

2026-04-03 02:28:51PHP

快速排序原理

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

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));
}

代码说明

  • 基准元素选择:默认使用数组第一个元素作为基准($pivot)。
  • 分区操作:遍历剩余元素,将小于基准的放入$left数组,大于等于的放入$right数组。
  • 递归合并:对左右子数组递归调用quickSort,最终合并结果为左数组 + 基准 + 右数组

优化建议

  1. 随机基准:避免最坏情况(如已排序数组),可随机选择基准:

    $pivotIndex = rand(0, count($array) - 1);
    $pivot = $array[$pivotIndex];
  2. 三数取中法:选择首、中、尾元素的中位数作为基准:

    php实现快速排序

    $mid = floor(count($array) / 2);
    $pivot = median($array[0], $array[$mid], $array[count($array) - 1]);

时间复杂度

  • 平均情况:O(n log n)
  • 最坏情况(基准选择不佳):O(n²)
  • 空间复杂度:O(log n)(递归栈)

使用示例

$unsorted = [3, 6, 8, 10, 1, 2, 1];
$sorted = quickSort($unsorted);
print_r($sorted); // 输出: [1, 1, 2, 3, 6, 8, 10]

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

相关文章

php实现搜索功能

php实现搜索功能

实现基础搜索功能 使用PHP和MySQL实现基础的搜索功能需要结合表单提交与数据库查询。创建一个HTML表单用于接收用户输入的搜索关键词,通过PHP处理表单数据并查询数据库。 // 搜索表单 (HT…

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…

php实现分类

php实现分类

PHP实现分类的方法 数据库设计 创建分类表时,通常需要包含id、名称、父级id等字段。父级id用于实现多级分类结构。 CREATE TABLE categories ( id INT AU…

php 实现单链表

php 实现单链表

单链表的基本概念 单链表是一种线性数据结构,由节点组成,每个节点包含数据域和指向下一个节点的指针域。链表的头节点是访问整个链表的入口。 单链表的节点类实现 在PHP中,可以通过类来定义链表节…

php mvc实现

php mvc实现

PHP MVC 实现步骤 模型(Model)层 模型负责数据处理和业务逻辑,通常与数据库交互。创建一个基类模型,其他具体模型继承它。 class Model { protected $db;…

php实现重定向

php实现重定向

使用header函数进行重定向 在PHP中,header()函数是实现重定向的常用方法。通过发送HTTP头信息Location,浏览器会自动跳转到指定URL。需确保在调用header()前没有输出任何…