diff --git "a/ja/\343\202\275\343\203\274\343\203\210\343\202\242\343\203\253\343\202\264\343\203\252\343\202\272\343\203\240/\343\203\220\343\203\226\343\203\253\343\202\275\343\203\274\343\203\210.md" "b/ja/\343\202\275\343\203\274\343\203\210\343\202\242\343\203\253\343\202\264\343\203\252\343\202\272\343\203\240/\343\203\220\343\203\226\343\203\253\343\202\275\343\203\274\343\203\210.md" new file mode 100644 index 0000000..c701b6f --- /dev/null +++ "b/ja/\343\202\275\343\203\274\343\203\210\343\202\242\343\203\253\343\202\264\343\203\252\343\202\272\343\203\240/\343\203\220\343\203\226\343\203\253\343\202\275\343\203\274\343\203\210.md" @@ -0,0 +1,92 @@ +# バブルソート + +#### 問題提起 + +ソートしていないn個の要素を持つ配列を指定し、それをソートする関数を作成しましょう。 + +#### アプローチ + +- 指定された配列の要素の中で一番最初のものを選びます。その要素をEとします +- Eと、Eの次の要素を比較します +- Eの次の要素の値よりEの値のほうが大きい場合、2つの値を入れ替えます +- そうでない場合、特に何も行いません +- 指定された配列の中のインデックス毎に行います +- 上記の処理をn回繰り返し行います。 + +#### 時間計算量 + +`O(n^2)` 最悪計算量 + +`O(n)` 最良計算量 + +`O(n^2)` 平均計算量 + +#### 空間計算量 + +`O(1)` 最悪計算量 + +#### 確立者 + +- バブルソートという名前は、ケネス・アイバーソンが1962年に最初に使われました。 + +#### 例 + +``` +arr[] = {10, 80, 40, 30} +Indexes: 0 1 2 3 + +1. Index = 0, Number = 10 +2. 10 < 80, 何もせずに操作を続行します + +3. Index = 1, Number = 80 +4. 80 > 40, 値を入れ替えます +5. 現在の配列: {10, 40, 80, 30} + +6. Index = 2, Number = 80 +7. 80 > 30, 値を入れ替えます +8. 現在の配列: {10, 40, 30, 80} + +上記の手順をまた繰り返します。 + +arr[] = {10, 40, 30, 80} +Indexes: 0 1 2 3 + +1. Index = 0, Number = 10 +2. 10 < 40, 何もせずに操作を続行します + +3. Index = 1, Number = 40 +4. 40 > 30, 値を入れ替えます +5. 現在の配列: {10, 30, 40, 80} + +6. Index = 2, Number = 40 +7. 40 < 80, 何もしません +8. 現在の配列: {10, 30, 40, 80} + +上記の手順をまた繰り返します。 + +arr[] = {10, 30, 40, 80} +Indexes: 0 1 2 3 + +1. Index = 0, Number = 10 +2. 10 < 30, 何もせずに操作を続行します + +3. Index = 1, Number = 30 +4. 30 < 40, 何もせずに操作を続行します + +5. Index = 2, Number = 40 +6. 40 < 80, 何もしません + +上記の操作では値の入れ替えがないため、配列をソートし終えたことになり、操作を止めることができます。 +``` + +#### 説明動画 + +[バブルソートアルゴリズムの説明動画](https://www.youtube.com/watch?v=Jdtq5uKz-w4) + +#### その他 + +バブルソートはシンキングソートという別名を持っています。 + +#### アニメーションを用いた説明 + +- [Tute Board](https://boardhub.github.io/tute/?wd=bubbleSortAlgo2)