PHPでバブルソートを実装するコード例

不言
リリース: 2023-04-04 21:18:02
転載
5058 人が閲覧しました

この記事の内容は、PHP でバブルソートを実装するためのコード例に関するものですが、一定の参考価値がありますので、困っている方は参考にしていただければ幸いです。

バブルソートは比較的単純で一般的に使用されるアルゴリズムであり、面接で最もよく聞かれる質問でもあります。これ以上深く理解するには私の力不足を感じますので、以下にいくつかの資料の内容を記録しておきます(原文へのリンクは記事末尾にあります)。

バブルソート

バブルソート(英語: Bubble Sort )は、単純な並べ替えアルゴリズムです。ソート対象のシーケンスを繰り返し調べて、一度に 2 つの要素を比較し、順序が間違っている場合はそれらを交換します。配列を訪問する作業は、それ以上の交換が必要なくなるまで繰り返されます。これは、配列がソートされたことを意味します。このアルゴリズムの名前は、小さい要素がスワッピングによって配列の先頭にゆっくりと「浮動」するという事実に由来しています。

バブル ソートでは、n 個の項目について O(n2) 回の比較が必要ですが、その場でソートできます。このアルゴリズムは理解して実装するのが最も簡単な並べ替えアルゴリズムの 1 つですが、多数の要素を含む配列を並べ替えるには非常に非効率です。

バブル ソート アルゴリズムは次のように機能します:

隣接する要素を比較します。最初のものが 2 番目のものより大きい場合は、両方を交換します。

隣接する要素の各ペアに対して、最初のペアから始めて最後のペアで終わるまで、同じことを実行します。このステップが完了すると、最後の要素が最大の数値になります。

最後の要素を除くすべての要素に対して上記の手順を繰り返します。

比較する数値のペアがなくなるまで、要素の数を減らしながら上記の手順を繰り返します。

上記はWikipediaの紹介文ですが、見ての通り原理は複雑ではありません。ただし、データ量が多い場合には、これは良い選択ではありません。

アニメーション デモンストレーション

下の図と例ではコードの順序が逆になっていることに注意してください。
PHPでバブルソートを実装するコード例

PHPでバブルソートを実装するコード例

#例

<?php $arr = [33, 24, 8, 21, 2, 23, 3, 32, 16];

function bubbleSort($arr)
{
    if (!is_array($arr)) {
        return false;
    }

    $count = count($arr);

    if ($count < 2) {
        return $arr;
    }

    for ($i = 0; $i < $count; $i++) {
        for ($k = $i + 1; $k < $count; $k++) {
            // $arr[$i] 和 $arr[$k] 是相邻的两个值
            if ($arr[$i] > $arr[$k]) {
                // 前者大于后者,调换位置
                // 如果想要按照从大到小进行排序,改为 $arr[$i]  2 [1] => 3 [2] => 8 [3] => 16 [4] => 21 [5] => 23 [6] => 24 [7] => 32 [8] => 33 )
ログイン後にコピー

以上がPHPでバブルソートを実装するコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート