php 实现算法
PHP 作为一门广泛应用于 Web 开发的脚本语言,同样可以高效实现各类算法。以下是几种常见算法的 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; // 未找到
}
斐波那契数列(递归与迭代)
递归实现
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];
}
注意事项
- 性能优化:递归算法可能因调用栈过深导致性能问题,可改用迭代或尾递归优化。
- 内置函数:PHP 提供
sort()、array_search()等内置函数,但自定义算法更灵活。 - 大数据处理:算法复杂度需结合数据规模选择(如避免 O(n²) 排序处理百万级数据)。
通过上述示例,可以扩展实现更复杂的算法(如图算法、字符串匹配等)。PHP 的数组和对象操作能力为算法实现提供了便利。







