原則: 一連のデータについて、隣接するデータのサイズを比較し、値の小さいデータを前に、値の大きいデータを後ろに置きます。 (以下はすべて小さい順、つまり大きい順に並べています)
例:$arr = array(6, 3, 8, 2, 9, 1);
$arrには6つのデータがあり、それらをペアで比較します。サイズは次のとおりです。比較ラウンドの数と各ラウンドの比較数に注意してください
ソートの最初のラウンド:
最初の比較 6 と 3 の比較結果: 3 6 8 2 9 1
2回目の比較6と3の比較結果: 3 6 8 2 9 1
8と2の3回目の比較結果: 3 6 2 8 9 1
8と9の4回目の比較結果: 3 6 2 8 9 1
9と1を比較 比較結果: 3 6 2 8 1 9
1回目の比較のまとめ: 1. 5回の並べ替えと比較の1回目では、小さいものから大きいものへの順序は得られませんでした 2.各比較は過去に遡る大きな数値に基づいているため、比較が完了すると、最大の数値が最後にランク付けされると判断できます (9 はすでに泡立っているため、次の比較ラウンドでは比較する必要はありません) )
2回目の並べ替え:
1回目の比較 3と6の比較結果: 3 6 2 8 1 9
2回目の6と2の比較結果: 3 2 6 8 1 9
3回目の比較result of 6 and 8: 3 2 6 8 1 9
8 と 1 の 4 回目の比較 比較結果: 3 2 6 1 8 9
2 回目の比較のまとめ: 1. 2 回目の並べ替えと比較4回、小さい順から大きい順が得られなかった 2. 8が泡立ち、次のラウンドでは比較する必要がない 8
3回目の並べ替え:
3と2の最初の比較結果: 2 3 6 1 8 9
2 回目の 3 と 6 の比較結果: 2 3 6 1 8 9
3 回目の 6 と 1 の比較結果: 2 3 1 6 8 9
3 回目の比較の要約: 1. 3 回目3 回の並べ替えと比較で、小さい順から大きい順は得られませんでした。 2. 6 が泡立ち、次の比較 6 では使用されませんでした。
4 回目の並べ替え:
最初の比較 2 と。 3 つの比較結果: 2 3 1 6 8 9
2 番目の比較 3 と 1 の比較結果: 2 1 3 6 8 9
4 回目の比較の要約: 1. 4 回目の並べ替えと 2 回の比較、いいえ小さいものから大きいものへの順序が得られました 2. 3 が出現し、次のラウンドでは 3 を比較する必要はありません
5 回目の並べ替え:
1 つの比較 2 と 1 の比較結果: 1 2 3 6 8 9
5回目の比較のまとめ: 1. 5回目の並べ替えと1回の比較では、小から大への並べ替えは得られませんでした 2. 2が泡立ちました。1は1つしか残っていないため、必要はありませんこの時点で、5 回のソーティングを経て、ソート全体が完了しました。
上記の 5 ラウンドのソートといくつかの比較を通じて、次の結論を推測する理由があります:
長さ N の配列の場合、N-1 ラウンドをソートする必要があり、各 i ラウンドは N-i と比較する必要があります。回。これには二重ループ ステートメントを使用できます。外側のループはループ ラウンドの数を制御し、内側のループは各ラウンドの比較の数を制御します。
<?php function order($arr){ $count = count($arr); $temp = 0; //外层控制排序轮次 for($i=0; $i<$count-1; $i++){ //内层控制每轮比较次数 for($j=0; $j< $count-1-$i; $j++){ if($arr[$j] > $arr[$j+1]){ $temp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $temp; } } } return $arr; } $arr= array(6,3,8,2,9,1); $res = order($arr); var_dump($res);
関連する推奨事項:
PHP バブル ソートを実装する複数のソリューションphp バブル ソート配列の小さいものから大きいものへの並べ替え方法php 配列バブル ソート アルゴリズムのサンプル コード以上がPHPバブルソート例の共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。