ホームページ > 記事 > 毎日のプログラミング > バブルソートの詳細分析
バブルソート
プログラミングやアルゴリズムに慣れていない友達にとって、ソートアルゴリズムはよくわからないかもしれません。次に、バブルソートを一緒に分析しましょう。
バブルソートの原理は何ですか?
配列を走査し、その間に 2 つの隣接するセルの値を比較します。前者が後者より大きい場合、2 つの値が交換されます。このプロセスの最後には、配列内の最大値が最後の位置に配置される必要があります。
上記の処理を再度実行すると、残ったデータの最大値が最後から2番目の位置にあることがわかります。
その後、再度上記の処理を続けると、残りのデータの最大値が最後から 3 番目の位置にあることがわかります。
などなど。 。 。 。 。
イラスト:
オリジナル配列 |
18 | 22 | 12 |
15 | 23 | 9 |
初めての旅行 | 18 |
22 | 12 | 15 | 9 | 23 |
2回目の旅行 | 18 | 22 | 12 | 9 | 15 | 23 |
3回目の旅行 | 18 | 22 | 9 | 12 | 15 | 23 |
4回目の旅行 | 18 | 9 | 12 | 15 | 22 | 23 |
5回目の旅行 | 9 | 12 | 15 | 18 | 22 | 23 |
コードのデモ:
$arr1 = array(18,22,12,15,23,9); $n = count($arr1); //控制要进行的躺数 for($i = 0;$i < $n-1;$i++){ //在每一趟里面,控制进行比较的次数 for($k = 0;$k < $n-1-$i;$k++){ if ($arr1[$k] > $arr1[$k+1]) { $temp = $arr1[$k]; $arr1[$k] = $arr1[$k+1]; $arr1[$k+1] = $temp; } } }
最後にルールをまとめます:
1. ペアを最初から最後まで比較し、位置を交換します。 $n は合計数 (配列の長さ) です
2. 隣接する 2 つのデータのサイズを毎回比較し、必要に応じて位置を交換します。
3. 各トリップの比較数は、前のトリップより 1 つ減ります: $n-1
。以上がバブルソートの詳細分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。