当前位置:首页 > PHP

php实现归并

2026-02-14 13:15:48PHP

归并排序的PHP实现

归并排序是一种基于分治法的排序算法,通过递归将数组拆分为更小的子数组,排序后再合并。以下是PHP实现代码及说明:

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

    $mid = (int) (count($array) / 2);
    $left = array_slice($array, 0, $mid);
    $right = array_slice($array, $mid);

    $left = mergeSort($left);
    $right = mergeSort($right);

    return merge($left, $right);
}

function merge(array $left, array $right): array {
    $result = [];
    while (count($left) > 0 && count($right) > 0) {
        if ($left[0] < $right[0]) {
            $result[] = array_shift($left);
        } else {
            $result[] = array_shift($right);
        }
    }

    return array_merge($result, $left, $right);
}

使用示例

$unsortedArray = [5, 2, 9, 1, 5, 6];
$sortedArray = mergeSort($unsortedArray);
print_r($sortedArray);

算法说明

归并排序的时间复杂度为O(n log n),空间复杂度为O(n)。该实现通过递归将数组不断二分,直到子数组长度为1,然后通过merge函数合并两个已排序的子数组。

merge函数通过比较两个子数组的首元素,将较小的元素放入结果数组,直到其中一个子数组为空,最后将剩余元素直接合并。

php实现归并

优化建议

对于小规模数组可切换为插入排序减少递归开销。PHP的array_shift操作有O(n)时间复杂度,可通过索引指针优化。

标签: php
分享给朋友:

相关文章

php实现上传

php实现上传

PHP 文件上传实现 HTML 表单设置 创建一个包含文件上传字段的 HTML 表单,确保表单的 enctype 属性设置为 multipart/form-data,这是文件上传必需的设置。 <…

php实现跳转

php实现跳转

PHP 实现页面跳转的方法 在 PHP 中实现页面跳转有多种方式,以下是常见的几种方法及其适用场景: 使用 header() 函数 通过 header() 函数发送 HTTP 头部信息实现跳转。注意…

php实现的分页

php实现的分页

PHP 实现分页的方法 基本分页逻辑 分页的核心在于计算总页数、当前页码以及数据偏移量。假设每页显示 10 条数据: $current_page = isset($_GET['page']) ? (…

php实现博客

php实现博客

使用PHP实现博客系统 数据库设计 创建数据库表存储博客文章和用户信息。常见的表包括posts(文章)和users(用户)。 CREATE TABLE users ( id INT AUTO…

php实现统计

php实现统计

PHP 实现统计功能 在 PHP 中实现统计功能通常涉及数据的收集、处理和展示。以下是一些常见的统计实现方法: 数据库数据统计 通过 SQL 查询可以直接从数据库中获取统计结果: $conn =…

php 函数实现

php 函数实现

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