PHP 中的冒泡排序

PHPz
发布: 2024-08-29 13:10:27
原创
880 人浏览过

PHP 中的冒泡排序是一种简单的排序技术/算法,它重复比较每对相邻项的步骤,并且仅在它们的顺序错误时才交换它们,正如我们不需要的那样。这种排序也称为下沉排序。重复元素的传递,直到不需要交换,这意味着现在列表已排序。这种排序技术/算法是一种与较小元素/数字的比较排序,称为“气泡”。

广告 该类别中的热门课程 PHP 开发人员 - 专业化 | 8 门课程系列 | 3次模拟测试

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

PHP 冒泡排序背后的逻辑

冒泡排序仅在元素顺序错误时才重复交换相邻元素。冒泡排序首先将第二个元素与第一个元素进行比较。如果第一个元素/索引值大于第二个元素/索引值,则将完成元素的交换。如果不这样做,则不会进行交换。如果数组的第一个元素大于第二个元素,则将进行元素交换。现在,第 1st 元素成为第 2nd 元素,反之亦然。现在,交换的元素再次与第 3 个rd 元素进行比较,依此类推,如果达到条件,则交换将始终进行,直到数组元素的末尾。现在,通过运行循环作为程序内部传递的数组长度/数组大小来发生上述场景。

PHP 中的冒泡排序是如何工作的?

PHP 编程语言中有不同类型的冒泡排序技术实现。第一种是使用 FOR 循环,第二种是使用 WHILE LOOP,第三种是使用 DO WHILE LOOP。在每个程序中,逻辑都是相同的,但语法会略有不同。

在 PHP 中实现冒泡排序的示例

下面是在 PHP 中实现冒泡排序的不同示例:

示例 #1 – 使用 for 循环

在下面的示例中,冒泡排序是使用 FOR LOOP 方法实现的。首先,计算并存储数组的大小,然后启动一个循环,然后在循环内部再次启动一个循环。然后比较相邻的数组值。如果 0 值的数组索引大于 1 值的数组索引,则 1 索引值将存储在 0 索引值中。 0 索引值将存储在 1 索引值处。然后,在函数本身内部使用一些元素提及数组,并再次创建 FOR 循环来调用排序后的数组值。这样,我们就得到了数组的排序后的元素。

代码:

<?php
function bubbleSort1(&$arr1)
{
$n1 = sizeof($arr1);
for($i1 = 0; $i1 < $n1; $i1++)
{
for ($j1 = 0; $j1 < $n1 - $i1 - 1; $j1++)
{
if ($arr1[$j1] > $arr1[$j1+1])
{
$t1 = $arr1[$j1];
$arr1[$j1] = $arr1[$j1+1];
$arr1[$j1+1] = $t1;
}
}
}
}
$arr1 = array(64, 32, 34, 26, 25, 43, 12, 68, 22, 90, 11);
$len1 = sizeof($arr1);
bubbleSort1($arr1);
echo "Sorted array : \n";
for ($i1 = 0; $i1 < $len1; $i1++)
echo $arr1[$i1]." ";
?>
登录后复制

输出:

PHP 中的冒泡排序

示例 #2 – 使用 WHILE 循环

在下面的示例中,创建了一个数组变量并在元素上列出。然后计算大小并将其存储在 $len12 中。然后首先创建一个循环,以数组的长度作为循环条件来显示数组中实际存在的元素。然后通过调用变量内部的函数创建一个变量来存储排序后的数组元素。然后创建一个正常的函数。在函数内部,WHILE LOOP 用于通过交换相邻元素来实现 PHP 中的冒泡排序。但这里只有当数组的第 2nd 元素小于第 1st 元素时才会进行交换。

代码:

<?php
$arr2 = array(7, 22, 33, 99, 6, 55, 11, 2, 3, 88, 4);
echo "Original Array Elements :: ";
echo "<br>";
$len12 = sizeof($arr2);
for ($z1 = 0; $z1 < $len12; $z1++)
echo $arr2[$z1]." ";
echo "<hr>";
echo "<br>Sorted array with index values :: \n<br>";
$sortedArr2 = bubbleSort($arr2);
var_dump($sortedArr2);
echo "<hr>";
function bubbleSort(array $arr2) {
$sorted2 = false;
while (false === $sorted2) {
$sorted2 = true;
for ($i2 = 0; $i2 < count($arr2)-1; ++$i2) {
$current2 = $arr2[$i2];
$next2 = $arr2[$i2+1];
if ($next2 < $current2) {
$arr2[$i2] = $next2;
$arr2[$i2+1] = $current2;
$sorted2 = false;
}
}
}
return $arr2;
}
echo "<br> Sorted Array Elements List :: ";
$len12 = sizeof($sortedArr2);
for ($z1 = 0; $z1 < $len12; $z1++)
echo $sortedArr2[$z1]." ";
echo "<br>";
echo "<hr>";
?>
登录后复制

输出:

PHP 中的冒泡排序

示例 #3 – 使用 DO WHILE 循环

在下面的程序中,创建了一个函数,并实现了 DO WHILE 循环来实现冒泡排序技术。这里首先创建了一个带有错误值的变量。然后创建一个 FOR 循环来运行数组元素。在循环内部,使用 IF 条件来检查 array1[0] 是否大于 array1[1] 值。如果是,那么索引的值将被交换。然后在 while 条件中检查交换的值并再次运行 DO WHILE 循环。同样,该过程继续并使用冒泡排序技术以排序方式打印数组元素。

代码:

<?php
function bubble_Sort1($my_array1 )
{
do
{
$swapped1 = false;
for( $i1 = 0, $c1 = count( $my_array1 ) - 1; $i1 < $c1; $i1++ )
{
if( $my_array1[$i1] > $my_array1[$i1 + 1] )
{
list( $my_array1[$i1 + 1], $my_array1[$i1] ) =
array( $my_array1[$i1], $my_array1[$i1 + 1] );
$swapped1 = true;
}
}
}
while( $swapped1 );
return $my_array1;
}
$test_array1 = array(3, 21, 0, -6, 2, 45, 5, 4, -1, 8, 4, 23, 1);
echo "Original Array as mentioned in the Program :\n";
echo implode(', ',$test_array1 );
echo "<br>";
echo "\nSorted Array of the above list\n:";
echo implode(', ',bubble_Sort1($test_array1)). PHP_EOL;
echo "<br>";
?>
登录后复制

输出:

PHP 中的冒泡排序

结论

我希望您了解 PHP 中冒泡排序的定义是什么、PHP 冒泡排序背后的逻辑以及如何使用各种方法在 PHP 中实现冒泡排序。

以上是PHP 中的冒泡排序的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
php
来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!