ホームページ  >  記事  >  バックエンド開発  >  PHPのバブルソート

PHPのバブルソート

PHPz
PHPzオリジナル
2024-08-29 13:10:27884ブラウズ

PHP のバブル ソートは、単純なソート手法/アルゴリズムの一種であり、隣接する項目の各ペアを比較し、順序が間違っている場合にのみそれらを交換するというステップを繰り返します。これは必要ありません。このソートはシンキングソートとも呼ばれます。要素の受け渡しは、交換が必要なくなるまで繰り返されます。これは、リストがソートされたことを意味します。このソート手法/アルゴリズムは、「バブル/バブル」と呼ばれる小さい要素/数値による比較ソートです。

広告 このカテゴリーの人気コース PHP 開発者 - 専門分野 | 8コースシリーズ | 3 つの模擬テスト

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

PHP のバブル ソートの背後にあるロジック

バブル ソートは、要素の順序が間違っている場合にのみ、隣接する要素を繰り返し入れ替えることによって機能します。バブル ソートでは、最初に 2 番目の要素と最初の要素が比較されます。最初の要素/インデックス値が 2 番目の要素/インデックス値より大きい場合、要素の交換が行われます。そうしないと交換は行われません。配列の最初の要素が 2 番目の要素より大きい場合、要素の交換が行われます。これで、1st 要素が 2nd 要素になり、その逆も同様です。ここで、スワップされた要素が 3rd 要素などと再度比較され、条件に達すると、配列要素の末尾まで常にスワップが行われます。上記のシナリオは、プログラム内で渡される配列の長さ/配列のサイズとしてループを実行することによって発生します。

PHP のバブル ソートはどのように機能しますか?

PHP プログラミング言語には、さまざまな種類のバブル ソート手法の実装があります。 1 つは FOR LOOP を使用する方法、2 つ目は WHILE LOOP を使用する方法、3 つ目は DO WHILE LOOP を使用する方法です。どのプログラムでも、ロジックは同じですが、構文は少し異なります。

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

以下は、PHP でバブル ソートを実装するためのさまざまな例です。

例 #1 – for ループの使用

以下の例では、FOR LOOP メソッドを使用してバブル ソートが実装されています。まず、配列のサイズが計算されて保存され、その後ループが開始され、さらにループ内で再度ループが開始されます。次に、隣接する配列値が比較されます。値 0 の配列インデックスが値 1 の配列インデックスより大きい場合、インデックス値 1 はインデックス値 0 に格納されます。 0 のインデックス値は 1 のインデックス値に格納されます。次に、関数自体の内部でいくつかの要素を使用して配列が言及され、並べ替えられた配列値を呼び出すために再び FOR ループが作成されます。このようにして、配列のソートされた要素を取得します。

コード:

<?php
function bubbleSort1(&$arr1)
{
$n1 = sizeof($arr1);
for($i1 = 0; $i1 < $n1; $i1++)
{
for ($j1 = 0; $j1 < $n1 - $i1 - 1; $j1++)
{
if ($arr1[$j1] > $arr1[$j1+1])
{
$t1 = $arr1[$j1];
$arr1[$j1] = $arr1[$j1+1];
$arr1[$j1+1] = $t1;
}
}
}
}
$arr1 = array(64, 32, 34, 26, 25, 43, 12, 68, 22, 90, 11);
$len1 = sizeof($arr1);
bubbleSort1($arr1);
echo "Sorted array : \n";
for ($i1 = 0; $i1 < $len1; $i1++)
echo $arr1[$i1]." ";
?>

出力:

PHPのバブルソート

例 #2 – WHILE ループの使用

以下の例では、配列変数が作成され、要素にリストされます。次に、サイズが計算され、$len12 に保存されます。次に、最初にループが作成され、配列の長さをループ条件として使用して、配列内に存在する実際の要素が表示されます。次に、変数内の関数を呼び出して、ソートされた配列要素を格納する変数が作成されます。次に、通常の関数が作成されます。関数内では、WHILE LOOP を使用して、隣接する要素を交換することで PHP のバブル ソートを実装します。ただし、ここでは配列の 2nd 要素が 1st 要素より小さい場合にのみ交換が行われます。

コード:

<?php
$arr2 = array(7, 22, 33, 99, 6, 55, 11, 2, 3, 88, 4);
echo "Original Array Elements :: ";
echo "<br>";
$len12 = sizeof($arr2);
for ($z1 = 0; $z1 < $len12; $z1++)
echo $arr2[$z1]." ";
echo "<hr>";
echo "<br>Sorted array with index values :: \n<br>";
$sortedArr2 = bubbleSort($arr2);
var_dump($sortedArr2);
echo "<hr>";
function bubbleSort(array $arr2) {
$sorted2 = false;
while (false === $sorted2) {
$sorted2 = true;
for ($i2 = 0; $i2 < count($arr2)-1; ++$i2) {
$current2 = $arr2[$i2];
$next2 = $arr2[$i2+1];
if ($next2 < $current2) {
$arr2[$i2] = $next2;
$arr2[$i2+1] = $current2;
$sorted2 = false;
}
}
}
return $arr2;
}
echo "<br> Sorted Array Elements List :: ";
$len12 = sizeof($sortedArr2);
for ($z1 = 0; $z1 < $len12; $z1++)
echo $sortedArr2[$z1]." ";
echo "<br>";
echo "<hr>";
?>

出力:

PHPのバブルソート

例 #3 – DO WHILE ループの使用

以下のプログラムでは、関数が作成され、バブル ソート手法を実装するために DO WHILE ループも実装されています。ここでは、最初に false 値を使用して変数が作成されました。次に、配列要素を実行するための FOR LOOP が作成されます。ループ内で、array1[0] が array1[1] の値より大きいかどうかをチェックする IF 条件が作成されます。 「はい」の場合、インデックスの値が交換されます。次に、交換された値が while 条件でチェックされ、DO WHILE ループが再度実行されます。同様に、プロセスは続行され、バブル ソート手法を使用して並べ替えられた方法で配列要素を出力します。

コード:

<?php
function bubble_Sort1($my_array1 )
{
do
{
$swapped1 = false;
for( $i1 = 0, $c1 = count( $my_array1 ) - 1; $i1 < $c1; $i1++ )
{
if( $my_array1[$i1] > $my_array1[$i1 + 1] )
{
list( $my_array1[$i1 + 1], $my_array1[$i1] ) =
array( $my_array1[$i1], $my_array1[$i1 + 1] );
$swapped1 = true;
}
}
}
while( $swapped1 );
return $my_array1;
}
$test_array1 = array(3, 21, 0, -6, 2, 45, 5, 4, -1, 8, 4, 23, 1);
echo "Original Array as mentioned in the Program :\n";
echo implode(', ',$test_array1 );
echo "<br>";
echo "\nSorted Array of the above list\n:";
echo implode(', ',bubble_Sort1($test_array1)). PHP_EOL;
echo "<br>";
?>

出力:

PHPのバブルソート

結論

PHP におけるバブル ソートの定義、PHP におけるバブル ソートの背後にあるロジック、およびさまざまな方法を使用して PHP でバブル ソートを実装する方法について学習できたと思います。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。