現在の位置: ホーム> 最新記事一覧> 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]

要約します

この記事では、3つの一般的なPHPアレイソートアルゴリズムを紹介します:バブルソート、選択ソート、およびソートを挿入します。これらの並べ替え方法は簡単ですが、基本的なソートアルゴリズムのアイデアを習得するのに役立ちます。実際の開発では、特定のニーズに応じて適切な選別方法を選択できます。より効率的なソートをするには、 sort()usort()などのphp内蔵ソート関数を考慮することができます。