当前位置:首页 > PHP

php实现快速排序

2026-04-03 02:28:51PHP

快速排序原理

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

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

代码说明

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

优化建议

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

    php实现快速排序

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

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

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Conte…

php 函数实现

php 函数实现

PHP 函数实现基础 PHP 函数的定义使用 function 关键字,后跟函数名和参数列表。函数名不区分大小写,但建议保持一致。 function functionName($param1, $p…

php实现apk下载

php实现apk下载

实现APK下载的PHP代码 创建一个简单的PHP脚本来处理APK文件的下载请求,确保文件传输正确且安全。 <?php $file = 'path/to/your/app.apk'; if (f…

php实现进度条

php实现进度条

PHP 实现进度条的方法 使用 HTML 和 CSS 结合 PHP 实现进度条 在 PHP 中,进度条通常通过 HTML 和 CSS 实现,PHP 负责计算进度并更新前端显示。 <div st…

php 抢购实现

php 抢购实现

抢购系统设计要点 高并发抢购系统的核心在于解决超卖问题、保证数据一致性以及提升系统性能。PHP实现需结合数据库、缓存和队列等技术。 数据库层面优化 使用InnoDB引擎的事务特性确保数据一致性。商品…