当前位置:首页 > PHP

php实现快速排序

2026-02-27 17:45:10PHP

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

代码说明

  1. 基线条件:当数组长度小于等于1时直接返回,因为单个元素已经是有序的。
  2. 选择基准值:通常选择第一个元素作为基准值(pivot)。
  3. 分区操作:将剩余元素与基准值比较,分为小于基准值的左数组和大于等于基准值的右数组。
  4. 递归排序:对左右子数组递归调用快速排序函数。
  5. 合并结果:将排序后的左数组、基准值和右数组合并。

优化版本

以下是原地排序的优化版本,减少内存使用:

php实现快速排序

function quickSortOptimized(array &$array, int $left = 0, int $right = null): void {
    if ($right === null) {
        $right = count($array) - 1;
    }

    if ($left >= $right) {
        return;
    }

    $pivotIndex = partition($array, $left, $right);
    quickSortOptimized($array, $left, $pivotIndex - 1);
    quickSortOptimized($array, $pivotIndex + 1, $right);
}

function partition(array &$array, int $left, int $right): int {
    $pivot = $array[$right];
    $i = $left;

    for ($j = $left; $j < $right; $j++) {
        if ($array[$j] < $pivot) {
            [$array[$i], $array[$j]] = [$array[$j], $array[$i]];
            $i++;
        }
    }

    [$array[$i], $array[$right]] = [$array[$right], $array[$i]];
    return $i;
}

使用示例

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

// 优化版本使用
$array = [3, 6, 8, 10, 1, 2, 1];
quickSortOptimized($array);
print_r($array);

性能分析

  1. 时间复杂度:平均情况O(n log n),最坏情况O(n²)。
  2. 空间复杂度:原始版本O(n),优化版本O(log n)。
  3. 稳定性:快速排序是不稳定的排序算法。

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

相关文章

php实现图片上传

php实现图片上传

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

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php实现mysql

php实现mysql

PHP 连接 MySQL 的基本方法 PHP 提供了多种方式与 MySQL 数据库进行交互,以下是最常用的几种方法。 使用 MySQLi 扩展 MySQLi 是 MySQL 的改进扩展,支持面向对…

php实现mvc

php实现mvc

PHP 实现 MVC 架构 MVC(Model-View-Controller)是一种常用的软件设计模式,将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller…

php实现推送消息推送消息

php实现推送消息推送消息

PHP 实现消息推送的方法 使用 WebSocket 实现实时推送 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,适合实现实时消息推送。 安装 Ratchet 库(WebSo…

php 链表实现

php 链表实现

在 PHP 中实现链表可以通过类来模拟链表节点(Node)和链表(LinkedList)结构。以下是链表的完整实现示例,包含基础操作如插入、删除、遍历等。 链表节点类(Node) 链表的基本单元是节…