Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 電腦軟體介紹

PHP 四大經典排序演算法實作教學:氣泡、選擇、插入、快速排序完整程式碼

編輯:電腦軟體介紹

排序演算法是程式設計基礎核心。本文詳細解析 PHP 實作的四大基本排序法——氣泡排序、選擇排序、插入排序、快速排序,附上完整程式碼與邏輯解析,適合初學者理解演算法運作原理。

1. 氣泡排序

核心邏輯: 依序比較相鄰元素,較大者往後「沉」,較小者往前「冒」,經過多輪比較完成排序。

$arr = array(1,43,54,62,21,66,32,78,36,76,39);
function bubbleSort($arr) {
    $len = count($arr);
    for ($i = 1; $i < $len; $i++) {
        for ($k = 0; $k < $len - $i; $k++) {
            if ($arr[$k] > $arr[$k+1]) {
                $tmp = $arr[$k+1];
                $arr[$k+1] = $arr[$k];
                $arr[$k] = $tmp;
            }
        }
    }
    return $arr;
}

2. 選擇排序

核心邏輯: 每輪從未排序區間找出最小值,與該輪起始位置交換。

function selectSort($arr) {
    $len = count($arr);
    for ($i = 0; $i < $len - 1; $i++) {
        $p = $i;
        for ($j = $i+1; $j < $len; $j++) {
            if ($arr[$p] > $arr[$j]) $p = $j;
        }
        if ($p != $i) {
            $tmp = $arr[$p];
            $arr[$p] = $arr[$i];
            $arr[$i] = $tmp;
        }
    }
    return $arr;
}

3. 插入排序

核心邏輯: 假設前段已排序,將下一個元素插入適當位置,維持有序。

function insertSort($arr) {
    $len = count($arr);
    for ($i = 1; $i < $len; $i++) {
        $tmp = $arr[$i];
        for ($j = $i-1; $j >= 0; $j--) {
            if ($tmp < $arr[$j]) {
                $arr[$j+1] = $arr[$j];
                $arr[$j] = $tmp;
            } else break;
        }
    }
    return $arr;
}

4. 快速排序

核心邏輯: 選取基準值,將陣列分為「小於基準」與「大於等於基準」兩部分,遞迴排序後合併。

function quickSort($arr) {
    $length = count($arr);
    if ($length <= 1) return $arr;
    $base_num = $arr[0];
    $left_array = $right_array = array();
    for ($i = 1; $i < $length; $i++) {
        if ($base_num > $arr[$i]) $left_array[] = $arr[$i];
        else $right_array[] = $arr[$i];
    }
    $left_array = quickSort($left_array);
    $right_array = quickSort($right_array);
    return array_merge($left_array, array($base_num), $right_array);
}

效能比較與應用建議

演算法平均時間複雜度穩定性適用場景
氣泡排序O(n²)穩定教學、極小資料量
選擇排序O(n²)不穩定教學、記憶體寫入受限
插入排序O(n²)穩定小資料、近乎有序資料
快速排序O(n log n)不穩定大量資料、一般用途首選

實務開發中,PHP 內建 sort()、usort() 等函數已高度優化,建議優先使用;理解演算法原理有助於面試與效能調優。

Copyright © Windows教程網 All Rights Reserved