当前位置:首页 > PHP

php 实现算法

2026-02-15 00:46:31PHP

PHP 作为一门广泛应用于 Web 开发的脚本语言,同样可以高效实现各类算法。以下是几种常见算法的 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));
}

二分查找

function binarySearch(array $sortedArray, $target): int {
    $low = 0;
    $high = count($sortedArray) - 1;
    while ($low <= $high) {
        $mid = (int)(($low + $high) / 2);
        if ($sortedArray[$mid] == $target) {
            return $mid;
        }
        if ($sortedArray[$mid] < $target) {
            $low = $mid + 1;
        } else {
            $high = $mid - 1;
        }
    }
    return -1; // 未找到
}

斐波那契数列(递归与迭代)

递归实现

php 实现算法

function fibonacciRecursive(int $n): int {
    if ($n <= 1) {
        return $n;
    }
    return fibonacciRecursive($n - 1) + fibonacciRecursive($n - 2);
}

迭代实现

function fibonacciIterative(int $n): int {
    if ($n <= 1) {
        return $n;
    }
    $a = 0; $b = 1;
    for ($i = 2; $i <= $n; $i++) {
        $temp = $a + $b;
        $a = $b;
        $b = $temp;
    }
    return $b;
}

动态规划(背包问题)

function knapSack(int $capacity, array $weights, array $values, int $n): int {
    $dp = array_fill(0, $n + 1, array_fill(0, $capacity + 1, 0));
    for ($i = 1; $i <= $n; $i++) {
        for ($w = 1; $w <= $capacity; $w++) {
            if ($weights[$i - 1] <= $w) {
                $dp[$i][$w] = max(
                    $values[$i - 1] + $dp[$i - 1][$w - $weights[$i - 1]],
                    $dp[$i - 1][$w]
                );
            } else {
                $dp[$i][$w] = $dp[$i - 1][$w];
            }
        }
    }
    return $dp[$n][$capacity];
}

注意事项

  1. 性能优化:递归算法可能因调用栈过深导致性能问题,可改用迭代或尾递归优化。
  2. 内置函数:PHP 提供 sort()array_search() 等内置函数,但自定义算法更灵活。
  3. 大数据处理:算法复杂度需结合数据规模选择(如避免 O(n²) 排序处理百万级数据)。

通过上述示例,可以扩展实现更复杂的算法(如图算法、字符串匹配等)。PHP 的数组和对象操作能力为算法实现提供了便利。

标签: 算法php
分享给朋友:

相关文章

php实现验证码

php实现验证码

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

php实现树

php实现树

PHP实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class Tr…

php实现异步

php实现异步

PHP 实现异步的方法 PHP 本身是同步执行的脚本语言,但可以通过以下方法模拟异步操作或实现异步效果: 使用多进程(pcntl_fork) 通过 pcntl_fork 创建子进程实现异步,适用于…

基于php的设计与实现

基于php的设计与实现

PHP 设计与实现的关键要素 环境搭建与框架选择 PHP开发需配置服务器环境(如Apache/Nginx)、PHP版本(建议7.4+)及数据库(MySQL/MariaDB)。主流框架包括Laravel…

php实现静态

php实现静态

静态化实现方法 PHP实现静态化主要通过生成HTML文件或缓存机制来减少服务器动态解析的开销。以下是几种常见方法: 生成静态HTML文件 通过file_put_contents()将动态内容保存为H…

php无限分类的实现

php无限分类的实现

PHP无限分类的实现 无限分类是一种常见的树形结构数据组织方式,适用于商品分类、菜单管理、地区选择等场景。以下是几种实现方法: 递归实现法 递归是最直观的实现方式,通过函数自身调用来遍历子分类。数据…