実際の PHP 開発では多くのソートに遭遇しますが、バブル ソート も一般的なソートの 1 つです。PHP 開発で良い仕事をしたい場合は、PHP を使用して簡単にバブル ソートを実装する必要があります。この記事はこちら PHPバブルソートについて解説します! PHP でバブル ソートを実装するさまざまな方法を見てみましょう。
バブルソートは非常に理解しやすく、実装も簡単です。例として、小さいものから大きいものへのソートを取り上げます。
配列の長さが N であると仮定します。 1.前後の隣接する 2 つのデータを比較し、前者のデータが後者のデータより大きい場合、2 つのデータを交換します。
2.このようにして、配列の 0 番目のデータから N-1 番目のデータまで移動した後、最大のデータは配列の N-1 番目の位置に「沈みます」。
3. N=N-1。N が 0 でない場合は、前の 2 つの手順を繰り返します。そうでない場合は、並べ替えが完了します。
オプション 1:
<?php function bubble1_sort($array) { $count = count($array); if ($count <= 1) { return $array; } for ($i = 0; $i < $count; $i++) { for ($j = 0; $j < $count; $j++) { if ($array[$i] < $array[$j]) { $temp = $array[$i]; $array[$i] = $array[$j]; $array[$j] = $temp; } } } return $array; }
オプション 2:
<?php function bubble2_sort($array) { $count = count($array); if ($count <= 1) { return $array; } for ($i = 0; $i < $count; $i++) { for ($j = 1; $j < $count - $i; $j++) { if ($array[$j - 1] > $array[$j]) { $temp = $array[$j - 1]; $array[$j - 1] = $array[$j]; $array[$j] = $temp; } } } return $array; }
オプション 3:
今回交換が発生した場合は true、それ以外の場合は false となるフラグを設定します。もちろん、1回の旅行で交換がなければ、仕分けは完了したことになります。<?php function bubble3_sort($array) { $count = count($array); if ($count <= 1) { return $array; } $flag = true; $j = $count; while ($flag) { $flag = false; for ($i = 1; $i < $j; $i++) { if ($array[$i - 1] > $array[$i]) { $temp = $array[$i - 1]; $array[$i - 1] = $array[$i]; $array[$i] = $temp; $flag = true; } } $j--; } return $array; }
オプション 4:
100 個の数値の配列がある場合、最初の 10 個だけが順序付けされておらず、次の 90 個はすべて並べ替えられており、すべてが最初の 10 個の数値より大きい場合、最初の走査の後、最後に交換が行われる位置は 10 未満である必要があり、この位置の後のデータは順序どおりである必要があり、この位置を記録し、2 回目は配列の先頭からこの位置までトラバースするだけです。<?php function bubble4_sort($array) { $count = count($array); if ($count <= 1) { return $array; } $flag = $count; while ($flag > 0) { $k = $flag; $flag = 0; for ($j = 1; $j < $k; $j++) { if ($array[$j - 1] > $array[$j]) { $temp = $array[$j - 1]; $array[$j - 1] = $array[$j]; $array[$j] = $temp; $flag = $j; } } } return $array; }
オプション 5:
<?php function bubble_sort($array) { $count = count($array); if ($count <= 1) { return $array; } for ($i = $count - 1; $i > 0; $i--) { $flag = false; for ($j = 0; $j < $count; $j++) { if ($array[$j] > $array[$j + 1]) { $temp = $array[$j]; $array[$j] = $array[$j + 1]; $array[$j + 1] = $temp; $flag = true; } } if (!$flag) break; } return $array; }
おすすめ関連記事:
選択ソート、挿入ソート、クイックソートを実装...
以上がPHP はバブルソートのための複数のソリューションを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。