首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 實現冒泡排序演算法:原理、代碼與優化

     編輯:PHP 綜合知識

冒泡排序是最基礎的排序演算法之一,核心思想是「兩兩比較相鄰元素,若順序錯誤則交換,直到無反序為止」。雖然 PHP 內建 sort()、asort() 等高效排序函式,但理解冒泡排序有助於掌握演算法基礎思維。

演算法原理

相鄰元素兩兩比較,前者大於後者則交換位置。每輪遍歷會將最大(或最小)元素「冒泡」到陣列末端。透過旗標優化,若某輪無交換發生,代表已排序完成,可提前結束。

PHP 實作代碼

<?php
$bub = array(9,5,8,3,4,6,1,2,7);
$sortarr = $asortarr = $bub;

// 冒泡排序(優化版)
$flag = true;
for ($i = 0; $i < count($bub) - 1 && $flag; $i++) {
    $flag = false;
    for ($j = count($bub) - 2; $j >= $i; $j--) {
        if ($bub[$j] > $bub[$j+1]) {
            $temp = $bub[$j];
            $bub[$j] = $bub[$j+1];
            $bub[$j+1] = $temp;
            $flag = true;
        }
    }
}

// PHP 內建函式對照
sort($sortarr);      // 重新索引排序
asort($asortarr);    // 保持鍵值關係排序

echo '冒泡:<pre>';
var_dump($bub);
echo 'sort:<pre>';
var_dump($sortarr);
echo 'asort:<pre>';
var_dump($asortarr);
?>

執行結果對照

冒泡排序與內建函式執行結果對照

複雜度分析

  • 時間複雜度:O(n²) 最好 O(n)(已排序)、最壞 O(n²)
  • 空間複雜度:O(1) 原地排序
  • 穩定性:穩定排序(相等元素相對位置不變)

實務開發中應優先使用 PHP 內建排序函式,它們基於快速排序等高效演算法實作,效能遠優於冒泡排序。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved