当前位置:首页 > PHP

php算法实现

2026-02-15 02:40:33PHP

PHP 算法实现指南

PHP 作为一种广泛使用的服务器端脚本语言,适用于多种算法实现场景。以下是常见算法在 PHP 中的实现方法。

排序算法

冒泡排序

function bubbleSort($array) {
    $n = count($array);
    for ($i = 0; $i < $n; $i++) {
        for ($j = 0; $j < $n - $i - 1; $j++) {
            if ($array[$j] > $array[$j + 1]) {
                $temp = $array[$j];
                $array[$j] = $array[$j + 1];
                $array[$j + 1] = $temp;
            }
        }
    }
    return $array;
}

快速排序

function quickSort($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));
}

搜索算法

二分查找

php算法实现

function binarySearch($array, $target) {
    $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;
}

图算法

Dijkstra 最短路径算法

function dijkstra($graph, $start) {
    $distances = [];
    $visited = [];
    $queue = new SplPriorityQueue();

    foreach ($graph as $vertex => $adj) {
        $distances[$vertex] = INF;
        $visited[$vertex] = false;
    }

    $distances[$start] = 0;
    $queue->insert($start, 0);

    while (!$queue->isEmpty()) {
        $u = $queue->extract();
        if ($visited[$u]) continue;
        $visited[$u] = true;

        foreach ($graph[$u] as $v => $weight) {
            $alt = $distances[$u] + $weight;
            if ($alt < $distances[$v]) {
                $distances[$v] = $alt;
                $queue->insert($v, -$alt);
            }
        }
    }
    return $distances;
}

动态规划

斐波那契数列

php算法实现

function fibonacci($n) {
    $dp = [];
    $dp[0] = 0;
    $dp[1] = 1;
    for ($i = 2; $i <= $n; $i++) {
        $dp[$i] = $dp[$i - 1] + $dp[$i - 2];
    }
    return $dp[$n];
}

字符串算法

KMP 字符串匹配

function computeLPSArray($pattern) {
    $lps = [0];
    $len = 0;
    $i = 1;
    $M = strlen($pattern);

    while ($i < $M) {
        if ($pattern[$i] == $pattern[$len]) {
            $len++;
            $lps[$i] = $len;
            $i++;
        } else {
            if ($len != 0) {
                $len = $lps[$len - 1];
            } else {
                $lps[$i] = 0;
                $i++;
            }
        }
    }
    return $lps;
}

function KMPSearch($text, $pattern) {
    $N = strlen($text);
    $M = strlen($pattern);
    $lps = computeLPSArray($pattern);
    $i = $j = 0;

    while ($i < $N) {
        if ($pattern[$j] == $text[$i]) {
            $i++;
            $j++;
        }
        if ($j == $M) {
            return $i - $j;
            $j = $lps[$j - 1];
        } elseif ($i < $N && $pattern[$j] != $text[$i]) {
            if ($j != 0) {
                $j = $lps[$j - 1];
            } else {
                $i++;
            }
        }
    }
    return -1;
}

实用技巧

性能优化建议

  • 对于大数据集,优先使用时间复杂度低的算法
  • 考虑使用 PHP 内置函数如 sort(),它们经过高度优化
  • 适当使用缓存机制存储中间计算结果

调试方法

  • 使用 var_dump() 或 print_r() 输出中间结果
  • 设置错误报告级别 error_reporting(E_ALL)
  • 考虑使用 Xdebug 进行逐步调试

以上实现提供了 PHP 中常见算法的基本框架,可以根据具体需求进行调整和优化。对于生产环境使用,建议添加充分的错误处理和边界条件检查。

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

相关文章

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php购物车实现

php购物车实现

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

php实现注册

php实现注册

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

php实现登陆

php实现登陆

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

php 实现评论

php 实现评论

实现 PHP 评论功能 数据库设计 创建数据库表存储评论数据,通常包含以下字段: id:评论唯一标识 user_id:用户ID content:评论内容 created_at:评论时间 parent…

php实现评论功能

php实现评论功能

数据库设计 创建评论表(示例结构): CREATE TABLE `comments` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id`…