当前位置:首页 > PHP

php算法实现

2026-03-13 01:29:55PHP

PHP 算法实现方法

PHP 作为一门广泛使用的服务器端脚本语言,可以实现多种算法。以下是几种常见算法的实现方式:

排序算法示例(快速排序)

function quickSort(array $array): array {
    if (count($array) < 2) {
        return $array;
    }
    $pivot = $array[0];
    $less = $greater = [];
    for ($i = 1; $i < count($array); $i++) {
        if ($array[$i] <= $pivot) {
            $less[] = $array[$i];
        } else {
            $greater[] = $array[$i];
        }
    }
    return array_merge(quickSort($less), [$pivot], quickSort($greater));
}

查找算法示例(二分查找)

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

递归算法示例(斐波那契数列)

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

动态规划示例(背包问题)

php算法实现

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

图算法示例(Dijkstra最短路径)

function dijkstra(array $graph, int $source): array {
    $dist = [];
    $visited = [];
    $count = count($graph);
    foreach (array_keys($graph) as $vertex) {
        $dist[$vertex] = INF;
        $visited[$vertex] = false;
    }
    $dist[$source] = 0;
    for ($i = 0; $i < $count; $i++) {
        $min = INF;
        $u = -1;
        foreach (array_keys($graph) as $vertex) {
            if (!$visited[$vertex] && $dist[$vertex] < $min) {
                $min = $dist[$vertex];
                $u = $vertex;
            }
        }
        if ($u == -1) break;
        $visited[$u] = true;
        foreach ($graph[$u] as $v => $weight) {
            if (!$visited[$v] && $dist[$u] + $weight < $dist[$v]) {
                $dist[$v] = $dist[$u] + $weight;
            }
        }
    }
    return $dist;
}

算法优化技巧

使用 PHP 内置函数如 array_merge()array_filter() 等可以提高性能

对于大数据集,考虑使用生成器(Generator)来节省内存

php算法实现

适当使用引用(&)减少变量复制开销

常见算法库

SPL (Standard PHP Library) 提供了一些数据结构实现

PHP-DS 扩展提供了更多高效的数据结构

可以使用 Composer 安装专门的算法包如 php-algorithms/algorithms

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

相关文章

php记住密码怎么实现

php记住密码怎么实现

使用Cookie实现记住密码功能 在PHP中,可以通过设置Cookie来记住用户的登录状态。以下是一个简单的实现方式: // 用户登录验证成功后 if ($login_success) {…

php实现上传

php实现上传

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

php实现即时通讯

php实现即时通讯

PHP 实现即时通讯的方案 即时通讯(IM)可以通过多种方式实现,PHP 作为服务器端语言,通常需要结合前端技术(如 WebSocket、AJAX)或第三方服务来实现实时通信。以下是几种常见的实现方式…

php实现博客

php实现博客

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

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…

php数据库实现

php数据库实现

PHP 连接 MySQL 数据库 使用 mysqli 扩展连接 MySQL 数据库: <?php $servername = "localhost"; $username = "usernam…