バブルソート-状況をグラフで表示

説明

バブルソートの状況を1回ごとに棒グラフで表示します。

並べ替えを行う方法の1つにバブルソートがあります。昇順ソートの場合、最初のデータと次のデータを比較し小さい場合入れ替えます。これをデータ数-1回繰り返せば並べ替えが完了します。シンプルな並べ替え方法と言えます。ただし、バブルソートは処理が完了するまで時間がかかるという欠点があります。

何かキーを押すと次の並べ替え(ソート)が実行されます。

Studioで試す

以下のリンクから Jasmine Tea でこのサンプルプログラムを Studio 画面で開いて実際に試すことができます。プログラムを実行したいときは、エディターの右下にある青色の「実行」ボタンを押してください。

Studio で開く

プログラム

// バブルソート-状況をグラフで表示
cls
print "何かキーを押すと次の処理に進みます"
d@=[70,2,45,35,90,14,56,81,22,10]
// ソートを実行
for i=0 to 8
  call viewData d@
  for j=0 to 8
    if d@[j]>d@[j+1] then
      tmp=d@[j]
      d@[j]=d@[j+1]
      d@[j+1]=tmp
    end if
  next
  do while inkey$()=""
  loop
next
call viewData d@
cls 1
// 配列の内容を表示
procedure viewData d@
  cls 2
  for i=0 to 9
    box (i*20+200,250)-(i*20+15+200,250-d@[i]),7,8
  next
  print
end procedure

解説

2行目で画面を消去しています。

4行目で並べ替える(ソートする)データを配列に用意しています。

7行目で並べ替える前の配列の内容を表示しています。プロシージャviewDataを呼び出すと配列の内容が画面に表示されます。21行目以降がプロシージャviewDataの処理内容になります。

8行目から14行目までが並べ替える処理です。データの数-1回分繰り返します。

9行目で隣り合う2つのデータを比較し前のデータが後ろのデータより大きければ内容を入れ替えます。内容の入れ替えはswapを使います。昇順で並べ替えるのではなく降順にする場合は以下のようにします。

棒グラフはプロシージャviewData内で行っています。cls 2として棒フラグを表示する前にグラフィック画面のみ消去しています。グラフィック画面を消去しないと、棒グラフが重ねって表示されてしまいます。