この記事の内容は、PHP でバブルソートを実装するためのコード例に関するものですが、一定の参考価値がありますので、困っている方は参考にしていただければ幸いです。
バブルソートは比較的単純で一般的に使用されるアルゴリズムであり、面接で最もよく聞かれる質問でもあります。これ以上深く理解するには私の力不足を感じますので、以下にいくつかの資料の内容を記録しておきます(原文へのリンクは記事末尾にあります)。
バブルソート
バブルソート(英語: Bubble Sort )は、単純な並べ替えアルゴリズムです。ソート対象のシーケンスを繰り返し調べて、一度に 2 つの要素を比較し、順序が間違っている場合はそれらを交換します。配列を訪問する作業は、それ以上の交換が必要なくなるまで繰り返されます。これは、配列がソートされたことを意味します。このアルゴリズムの名前は、小さい要素がスワッピングによって配列の先頭にゆっくりと「浮動」するという事実に由来しています。
バブル ソートでは、n 個の項目について O(n2) 回の比較が必要ですが、その場でソートできます。このアルゴリズムは理解して実装するのが最も簡単な並べ替えアルゴリズムの 1 つですが、多数の要素を含む配列を並べ替えるには非常に非効率です。
バブル ソート アルゴリズムは次のように機能します:
隣接する要素を比較します。最初のものが 2 番目のものより大きい場合は、両方を交換します。
隣接する要素の各ペアに対して、最初のペアから始めて最後のペアで終わるまで、同じことを実行します。このステップが完了すると、最後の要素が最大の数値になります。
最後の要素を除くすべての要素に対して上記の手順を繰り返します。
比較する数値のペアがなくなるまで、要素の数を減らしながら上記の手順を繰り返します。
上記はWikipediaの紹介文ですが、見ての通り原理は複雑ではありません。ただし、データ量が多い場合には、これは良い選択ではありません。
アニメーション デモンストレーション
下の図と例ではコードの順序が逆になっていることに注意してください。
#例
<?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 サイトの他の関連記事を参照してください。