當前位置: 首頁> 最新文章列表> PHP 數組排序算法完全解析:如何編寫自定義排序功能

PHP 數組排序算法完全解析:如何編寫自定義排序功能

M66 2025-07-14

PHP 數組排序算法完全解析

數組排序是編程中非常常見的任務,它幫助我們根據指定的規則重新排列數組中的元素。在PHP 中,內置了多種排序函數,但在某些場合下,我們可能需要編寫自己的排序算法以滿足特定需求。本篇文章將重點講解如何自定義PHP 數組排序算法,包含常見的冒泡排序、選擇排序以及插入排序算法,並給出實戰代碼示例。

冒泡排序

冒泡排序是一種簡單的排序算法,通過反复比較相鄰元素並交換它們的位置,直到整個數組有序。它的時間複雜度為O(n²),在數據量較小時使用較為合適。

 function bubbleSort(array &$arr) {
    $n = count($arr);
    for ($i = 0; $i < $n - 1; $i++) {
        for ($j = 0; $j < $n - $i - 1; $j++) {
            if ($arr[$j] > $arr[$j + 1]) {
                $tmp = $arr[$j];
                $arr[$j] = $arr[$j + 1];
                $arr[$j + 1] = $tmp;
            }
        }
    }
}

選擇排序

選擇排序的基本思想是從未排序的部分選擇最小(或最大)的元素,放到已排序部分的末尾。它比冒泡排序稍微優化一些,但時間複雜度仍然是O(n²),適用於小規模數據排序。

 function selectionSort(array &$arr) {
    $n = count($arr);
    for ($i = 0; $i < $n - 1; $i++) {
        $min_idx = $i;
        for ($j = $i + 1; $j < $n; $j++) {
            if ($arr[$j] < $arr[$min_idx]) {
                $min_idx = $j;
            }
        }
        $tmp = $arr[$i];
        $arr[$i] = $arr[$min_idx];
        $arr[$min_idx] = $tmp;
    }
}

插入排序

插入排序是一種將每個新元素插入到已經排序好的部分中,從而形成一個新的有序數組。它的時間複雜度為O(n²),但在數據量較少時效率較高,常用於小規模數據的排序。

 function insertionSort(array &$arr) {
    $n = count($arr);
    for ($i = 1; $i < $n; $i++) {
        $key = $arr[$i];
        $j = $i - 1;
        while ($j >= 0 && $arr[$j] > $key) {
            $arr[$j + 1] = $arr[$j];
            $j--;
        }
        $arr[$j + 1] = $key;
    }
}

實戰案例

接下來,我們將使用冒泡排序算法按升序對一個PHP 數組進行排序:

 $arr = [5, 2, 8, 3, 1];
bubbleSort($arr);

排序後的數組如下:

 [1, 2, 3, 5, 8]

總結

本文介紹了三種常見的PHP 數組排序算法:冒泡排序、選擇排序和插入排序。這些排序方法雖簡單,但卻能幫助我們掌握基礎的排序算法思路。在實際開發中,我們可以根據具體需求選擇合適的排序方式。對於更高效的排序,可以考慮PHP 內置的排序函數,如sort()usort()