☆ 演習6−4 ☆(バブルソート)

6つの数値を入力すると、自動的に昇順(小さいものから大きいものへ)に整列するアルゴリズムを作成しなさい。
ただし、整列アルゴリズムには「バブルソート」を用いること。

演習6-3では選択ソートを用いましたが、今回はバブルソートです。ここからはいろいろなソートについて学んでいきます。

では、バブルソートとはどういうものなのでしょうか。


この図がバブル選択ソートのイメージになります。

バブルソートは、「基本交換法」とも言います。
今回の演習のように昇順に整列するアルゴリズムの場合、バブルソートは常に隣り合う2つのデータを比較し、その関係が昇順になっていなかった場合に、その隣り合う2つのデータを入れ替えるという処理を繰返すものです。
結果的に最大値から順番に整列していきます。

最初に6回入力させて全て配列に入れ、それを順番通りに出力するところは演習6-3と同じです。
出力結果も演習6-3と同じようになります。

出力内容は同じでも、ソートには種類があります。
使い分けるためにしっかりと覚えておきましょう。
そして作成するシートはこちら。

少しずつ分割して説明していきましょう。

この部分の、条件値判定繰返しの右の部分がバブルソートです。

変数kは、繰り返しの分だけの数値を用意しておきます。
用は繰返させるためだけの変数です。


問題は分岐シンボルのところですね。

A[i]>A[i+1]』という式ですが、選択ソートの時よりわかりやすいですね。
もしA[i]がA[1]だった場合は、A[i+1]というのはA[2]。
A[i]がA[2]だった場合は、A[i+1]というのはA[3]。

つまり、隣り合った数値を比較しているんです。
これがバブルソート。

そして入れ替えの処理は演習6-3の選択ソートの時と変わりません。


そして、この条件値判定が繰返されるたびに変数kから-1していく処理シンボルがありますね。

これは後判定繰返しで指定されている式のためですね。
kが1より大きければこの処理が続くわけですから、kを減らしていかなければ永久ループに入ってしまいます。
忘れないようにしましょう。


最後の出力の部分も演習6-3と変わりません。


では出力結果を見てみましょう。