基本概念:
バブル ソート (BubbleSort) の基本概念は次のとおりです。隣接する 2 つの数値を順番に比較し、小数点を前に、大きな数値を後ろに置きます。つまり、最初のパスでは、まず 1 番目と 2 番目の数値を比較し、小数点を前に、大きな数値を後ろに置きます。次に、2 番目の数値と 3 番目の数値を比較し、小数を前に、大きな数値を後ろに置きます。最後の 2 つの数値を比較するまで同様に、小数を前に、大きな数値を後ろに置きます。これで最初の旅行が終了し、最大数が最後に残ります。 2 番目のパスでは、引き続き最初の数値ペアから比較を開始します (2 番目の数値と 3 番目の数値の交換により、最初の数値が 2 番目の数値より小さくなくなっている可能性があるため)、小数点を最初に置きます。 、および大きな数値を配置した後、最後から 2 番目の数値まで比較が続行されます (最後から 1 番目の位置がすでに最大になっています)。2 番目のパスの終了時に、最後から 2 番目の位置で新しい最大数値が取得されます。位置 (実際には、シーケンス全体の中で 2 番目に大きい番号です)。このようにして、最終的に並べ替えが完了するまで上記のプロセスを繰り返します。
ソートの際、小数点以下は必ず前方に、大きい数字は後方に配置されるため、バブルが上昇するのと同じなのでバブルソートと呼ばれます。
二重ループを使用して実装します。外側のループ変数は i に設定され、内側のループ変数は j に設定されます。並べ替える必要がある数値が 10 個ある場合、外側のループが 9 回繰り返され、内側のループが 9、8、...、1 回繰り返されます。毎回比較される 2 つの要素は内側のループ j に関連しており、それぞれ a[j] と a[j+1] で識別できます。i の値は 1、2、...、9 です。各 i,j の値は 1,2,...10-i です。
/*
* ポイント 1: スワップ変数を記憶する
* ポイント 2: ループ内のサイズを記憶する
*/
$arr = array(2,1, 4,2,7); // 配列変数を初期化します
$result = maoSort($arr); // 関数を呼び出して結果を取得します
echo '
' //出力形式<br>print_r($result); //結果を出力<br>echo '
';
function maoSort($arr){ //関数 start
$size = count($arr)-1 ; //ループする必要があるサイズは全長 - 1
for ($i = 0; $i for ($j = 0; $j
; $size-$i; $j++) { //ループ内
if ($arr[$j] < $arr[$j+1]) { //大きいか小さいかを比較します
$temp = $arr[$j]; //スワップ開始
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $temp;
}
}
}
return $arr;
}
?>
この記事へのリンク http://www.cxybl.com/html/wlbc/Php/20130504/37470.html