php是一种非常流行的编程语言,它支持各种数据类型和算法,其中数组排序和搜索算法是基本而重要的部分。本文将会介绍php中常用的数组排序及搜索算法,以及它们的应用场景和效率分析。
一、数组排序
PHP中提供了多种数组排序的方法,包括冒泡排序、插入排序、选择排序、快速排序、归并排序等等。以下是对其中常用的几种算法的介绍及示例代码:
冒泡排序是一种简单却低效的排序算法,其基本思想是从数组的第一个元素开始,依次比较相邻元素的大小,若左边元素大于右边元素,则交换它们的位置。这样一轮比较下来,最大的元素就被移到了数组的末尾。接着再从第一个元素开始,重复上述操作,其时间复杂度为O(n^2)。
示例代码:
立即学习“PHP免费学习笔记(深入)”;
function bubble_sort($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;
}插入排序是一种相对简单的排序算法,其基本思想是将一个待排序的数据插入到已经有序的序列中,以达到排序的目的。假设前面的元素已经排序好,从数组的第二个元素开始向前寻找合适的位置进行插入操作。与冒泡排序类似,其时间复杂度也为O(n^2)。
示例代码:
立即学习“PHP免费学习笔记(深入)”;
function insertion_sort($arr) {
$len = count($arr);
for ($i = 1; $i < $len; $i++) {
$temp = $arr[$i];
for ($j = $i - 1; $j >= 0 && $arr[$j] > $temp; $j--) {
$arr[$j + 1] = $arr[$j];
}
$arr[$j + 1] = $temp;
}
return $arr;
}快速排序是一种常用的高效排序算法,其基本思想是选取数组中任意一个元素作为基准值,然后将剩下的元素分为两个子序列:左边的数都比基准值小,右边的数都比基准值大。接着再对左、右子序列重复以上步骤,直到子序列的长度为1或0。快速排序的时间复杂度为O(n log2 n),并且它是不稳定排序。
示例代码:
立即学习“PHP免费学习笔记(深入)”;
function quick_sort($arr) {
$len = count($arr);
if ($len <= 1) {
return $arr;
}
$pivot_key = $arr[0];
$left_arr = array();
$right_arr = array();
for ($i = 1; $i < $len; $i++) {
if ($arr[$i] <= $pivot_key) {
$left_arr[] = $arr[$i];
} else {
$right_arr[] = $arr[$i];
}
}
$left_arr = quick_sort($left_arr);
$right_arr = quick_sort($right_arr);
return array_merge($left_arr, array($pivot_key), $right_arr);
}二、数组搜索
PHP中的数组搜索算法主要包括线性搜索、二分搜索和哈希搜索。以下是对其中常用的几种算法的介绍及示例代码:
线性搜索是一种简单的查找算法,其基本思想是从数组的第一个元素开始,逐个比较元素的值和关键字是否相同,若存在则返回该元素的下标,否则返回-1。线性搜索的时间复杂度为O(n)。
示例代码:
立即学习“PHP免费学习笔记(深入)”;
function linear_search($arr, $key) {
$len = count($arr);
for ($i = 0; $i < $len; $i++) {
if ($arr[$i] == $key) {
return $i;
}
}
return -1;
}二分搜索也称折半查找,其基本思想是将有序数组分成两部分,每次比较中间元素和关键字的大小,若相等则返回该元素的下标,否则根据大小关系将搜索范围缩小一半,直到找出目标元素。二分搜索的时间复杂度为O(log2 n)。
示例代码:
立即学习“PHP免费学习笔记(深入)”;
function binary_search($arr, $key) {
$low = 0;
$high = count($arr) - 1;
while ($low <= $high) {
$mid = floor(($low + $high) / 2);
if ($arr[$mid] == $key) {
return $mid;
} elseif ($arr[$mid] > $key) {
$high = $mid - 1;
} else {
$low = $mid + 1;
}
}
return -1;
}哈希搜索是一种利用哈希表的高效查找算法。其基本思想是将每个元素的关键字映射到哈希表中,通过一个哈希函数计算出其所在的位置,然后在该位置中查找所需元素。哈希搜索的时间复杂度为O(1),但是需要构造和维护哈希表。
以上就是PHP中常用的数组排序及搜索算法的介绍及示例代码,根据实际应用场景和数据规模选择不同的算法可以提高代码的效率。
以上就是PHP中的数组排序及搜索算法的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号