当前位置:首页 > 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. 合并结果:将排序后的左数组、基准值和右数组合并。

优化版本

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

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如何实现直播

php如何实现直播

实现直播功能的方法 PHP可以通过结合其他技术和工具来实现直播功能。以下是几种常见的方法: 使用流媒体服务器 配置流媒体服务器如Nginx-RTMP、Red5或Wowza。这些服务器支持RTMP协…

php购物车实现

php购物车实现

PHP购物车实现方法 使用PHP实现购物车功能可以通过多种方式完成,以下是几种常见的实现方法: Session存储购物车数据 利用PHP的$_SESSION超全局变量存储购物车数据是最简单的方法。…

php实现注册

php实现注册

注册功能实现步骤 数据库准备 创建用户表,包含字段如id、username、password、email等。示例SQL: CREATE TABLE users ( id INT AUTO_…

php实现排序

php实现排序

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

php实现mysql

php实现mysql

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

php实现聊天

php实现聊天

实现 PHP 聊天功能的方法 使用 WebSocket 和 PHP 实现实时聊天 WebSocket 是一种全双工通信协议,适合实现实时聊天功能。PHP 可以通过 Ratchet 库实现 WebS…