☆ 演習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と変わりません。
では出力結果を見てみましょう。