php算法实现
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);
}
动态规划示例(背包问题)

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)来节省内存

适当使用引用(&)减少变量复制开销
常见算法库
SPL (Standard PHP Library) 提供了一些数据结构实现
PHP-DS 扩展提供了更多高效的数据结构
可以使用 Composer 安装专门的算法包如 php-algorithms/algorithms






