首頁  >  文章  >  後端開發  >  PHP 中的冒泡排序

PHP 中的冒泡排序

PHPz
PHPz原創
2024-08-29 13:10:27884瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:PrestaShop版本下一篇:PrestaShop版本