PHP冒泡排序算法代码详细解读
什么是冒泡排序?
冒泡排序是一种简单的排序算法,通过交换相邻元素比较和交换的方式进行排序。该算法会重复遍历待排序的数列,每次比较相邻的两个元素,如果顺序错误就交换位置。重复执行这个过程,直到整个数列有序。
算法实现过程
以下是基于PHP语言实现的冒泡排序代码,对应的注释为算法的实现过程说明。
function bubbleSort($arr) {
$len = count($arr); // 数组长度
// 进行n次循环排序,n为数组长度减1
for ($i = 0; $i < $len - 1; $i++) {
// 每一次循环排序都会比上一次少1位(已经被排序好的)。因此 j 的取值范围要减去 $i
for ($j = 0; $j < $len - 1 - $i; $j++) {
// 如果前面的数比后面的数大,就交换它们的位置
if ($arr[$j] > $arr[$j + 1]) {
$temp = $arr[$j + 1];
$arr[$j + 1] = $arr[$j];
$arr[$j] = $temp;
}
}
}
return $arr;
}
下面具体说明每一句代码的作用:
function bubbleSort($arr)
:定义函数名为bubbleSort,参数为一个数组$arr。$len = count($arr)
:获取数组的长度。for ($i = 0; $i < $len - 1; $i++)
:外层循环,循环次数为数组长度减1,也即要进行 n-1 次循环排序。for ($j = 0; $j < $len - 1 - $i; $j++)
:内层循环,循环范围为 0 到数组长度减1减$i,即未排序中的所有元素。if ($arr[$j] > $arr[$j + 1])
:判断相邻的两个元素是否需要交换位置。list($arr[$j], $arr[$j + 1]) = array($arr[$j + 1], $arr[$j]);
:使用list函数+array函数完成交换操作。return $arr
:返回排序后的数组。
示例说明
示例一
我们来看一个简单的示例,以说明冒泡排序的工作原理。
$arr = [5, 3, 8, 4, 2];
$bubbleSortArr = bubbleSort($arr);
print_r($bubbleSortArr);
输出结果为:
Array
(
[0] => 2
[1] => 3
[2] => 4
[3] => 5
[4] => 8
)
示例二
下面是一个稍微复杂的示例:将一批公司按照员工数量从大到小进行排序。
$companyArr = [
['name' => 'C公司', 'employee' => 800],
['name' => 'E公司', 'employee' => 500],
['name' => 'A公司', 'employee' => 1000],
['name' => 'D公司', 'employee' => 600],
['name' => 'B公司', 'employee' => 900],
];
usort($companyArr, function($a, $b) {
return $b['employee'] - $a['employee'];
});
print_r($companyArr);
输出结果为:
Array
(
[0] => Array
(
[name] => A公司
[employee] => 1000
)
[1] => Array
(
[name] => B公司
[employee] => 900
)
[2] => Array
(
[name] => C公司
[employee] => 800
)
[3] => Array
(
[name] => D公司
[employee] => 600
)
[4] => Array
(
[name] => E公司
[employee] => 500
)
)
上面示例二中,我们将公司员工数量保存在一个二维数组中,利用usort函数和匿名函数对公司列表按照员工数量进行排序。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP冒泡排序算法代码详细解读 - Python技术站