高井です。今回はバブルソートを見て気持ち良くなりましょう!
バブルソートって何?
バラバラに並んでいるデータを小さい順(大きい順)に並び替えることをソートと呼びます。
バブルソートは
「隣の要素と比較して、順番が逆なら入れ替える」を繰り返して並び替える
手法のことです。
たとえば
例えば4つの要素を小さい順に並び替えるとき
- 1番目と2番目の要素を比べて、1番目の要素の値のほうが大きかったら入れ替える
- 2番目と3番目の要素を比べて、2番目の要素の値のほうが大きかったら入れ替える
- 3番目と4番目の要素を比べて、3番目の要素の値のほうが大きかったら入れ替える
これで4番目の要素は最大のものになっています。4番目の値が確定しました。
次に、確定している4番目の要素以外を並び替えます。
- 1番目と2番目の要素を比べて、1番目の要素の値のほうが大きかったら入れ替える
- 2番目と3番目の要素を比べて、2番目の要素の値のほうが大きかったら入れ替える
これで3番目の値も確定しました。
これを全要素確定するまで繰り返します。
メリットとデメリット
メリットは仕組みが単純なことです。言葉で説明するのも簡単だし、実装しやすいです。
デメリットはというと、時間がかかることです。
バブルソートを改良して、もっと早く処理できるものが作られたりしています。
なんで「バブル」なの?
ソートの過程でデータが移動する様子が泡のように見えるからそう呼ばれるそうです。
ポエミーだなあ。
見てみたい
言葉で説明されてもピンとこないというか…見てみたいですよね。
ソートの過程でデータが移動する様子が泡のようになっているのも見てみたいし。
あと、乱雑だったものがきれいに並ぶのを見るのって気持ちいいですから。
作ってみた
というわけでProcessingで作ってみました。
確定したデータは赤、未確定のところは青で表示されます。
正直、泡にはあんまり見えないですけど、気持ちいい感はありますね!
以上、高井でした![]()