在 PHP 编程中,算法是非常重要的一部分。合理的算法可以大大提高程序的效率和运行速度。本文将介绍 php 编程中常用的算法及其实现方法。 一、排序算法 冒泡排序 冒泡排序是最简单的排序算法之一,它的基本思想是比较相邻的两个元素,如果
在 PHP 编程中,算法是非常重要的一部分。合理的算法可以大大提高程序的效率和运行速度。本文将介绍 php 编程中常用的算法及其实现方法。
一、排序算法
冒泡排序是最简单的排序算法之一,它的基本思想是比较相邻的两个元素,如果前面的元素大于后面的元素,则交换这两个元素。
代码实现:
function bubbleSort($arr) {
$len = count($arr);
for ($i = 0; $i < $len - 1; $i++) {
for ($j = 0; $j < $len - $i - 1; $j++) {
if ($arr[$j] > $arr[$j + 1]) {
$temp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $temp;
}
}
}
return $arr;
}
快速排序是一种高效的排序算法,它的基本思想是通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后再分别对这两部分记录继续进行排序,以达到整个序列有序的目的。
代码实现:
function quickSort($arr) {
$len = count($arr);
if ($len <= 1) {
return $arr;
}
$middle = $arr[0];
$left = array();
$right = array();
for ($i = 1; $i < $len; $i++) {
if ($arr[$i] < $middle) {
$left[] = $arr[$i];
} else {
$right[] = $arr[$i];
}
}
return array_merge(quickSort($left), array($middle), quickSort($right));
}
二、查找算法
二分查找又称折半查找,它的基本思想是将有序数组分成两部分,取数组中间的元素与目标值进行比较,如果中间元素等于目标值,则查找成功,返回中间元素的下标;如果中间元素大于目标值,则在左半部分继续查找;如果中间元素小于目标值,则在右半部分继续查找。
代码实现:
function binarySearch($arr, $target) {
$left = 0;
$right = count($arr) - 1;
while ($left <= $right) {
$middle = intval(($left + $right) / 2);
if ($arr[$middle] == $target) {
return $middle;
} elseif ($arr[$middle] > $target) {
$right = $middle - 1;
} else {
$left = $middle + 1;
}
}
return -1;
}
哈希查找是一种利用哈希表进行查找的算法,它的基本思想是将关键字通过哈希函数映射到哈希表中的一个位置,如果该位置上存在相应的元素,则查找成功;否则,继续查找下一个位置。
代码实现:
function hashSearch($arr, $target) {
$hashTable = array();
foreach ($arr as $value) {
$hashTable[$value] = true;
}
return isset($hashTable[$target]) ? array_search($target, $arr) : -1;
}
三、字符串匹配算法
暴力匹配是一种简单的字符串匹配算法,它的基本思想是从主串的第一个字符开始与模式串的第一个字符进行比较,如果相等,则比较下一个字符,直到模式串中所有字符都匹配成功;否则,主串的下一个字符与模式串的第一个字符进行比较,直到匹配成功或主串中没有剩余字符为止。
代码实现:
function bruteForce($str, $pattern) {
$len1 = strlen($str);
$len2 = strlen($pattern);
for ($i = 0; $i <= $len1 - $len2; $i++) {
$j = 0;
while ($j < $len2 && $str[$i + $j] == $pattern[$j]) {
$j++;
}
if ($j == $len2) {
return $i;
}
}
return -1;
}
KMP 算法是一种高效的字符串匹配算法,它的基本思想是利用已知信息跳过不必要的比较,从而提高匹配效率。KMP 算法通过计算模式串的前缀和后缀的最长公共子串,以及利用这个信息消除主串中的重复比较,从而实现高效的字符串匹配。
代码实现:
function getNext($pattern) {
$len = strlen($pattern);
$next = array(-1, 0);
$k = 0;
for ($i = 2; $i < $len; $i++) {
while ($k > 0 && $pattern[$k] != $pattern[$i - 1]) {
$k = $next[$k];
}
if ($pattern[$k] == $pattern[$i - 1]) {
$k++;
}
$next[$i] = $k;
}
return $next;
}
function kmpSearch($str, $pattern) {
$next = getNext($pattern);
$i = 0;
$j = 0;
$len1 = strlen($str);
$len2 = strlen($pattern);
while ($i < $len1 && $j < $len2) {
if ($j == -1 || $str[$i] == $pattern[$j]) {
$i++;
$j++;
} else {
$j = $next[$j];
}
}
if ($j == $len2) {
return $i - $j;
} else {
return -1;
}
}
以上就是 PHP 编程中常用的算法及其实现方法,希望对大家有所帮助。
--结束END--
本文标题: PHP 编程中有哪些常用的算法及其实现方法?
本文链接: https://www.lsjlt.com/news/369449.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0