バブルソートのアルゴリズムについて、骨格となるループ処理部分をVBAで表現
Sub バブルソートのループ処理イメージ()
Dim i As Integer, j As Integer, N As Integer
N = 10 ‘配列数
For i = 1 To 10 – 1 Step 1
For j = N To i + 1 Step -1
Debug.Print "i=" & i & " i+1=" & i + 1 & " j=" & j & " j-1=" & j – 1
Next j
Next i
End Sub
実行結果
i=1 i+1=2 j=10 j-1=9
i=1 i+1=2 j=9 j-1=8
i=1 i+1=2 j=8 j-1=7
i=1 i+1=2 j=7 j-1=6
i=1 i+1=2 j=6 j-1=5
i=1 i+1=2 j=5 j-1=4
i=1 i+1=2 j=4 j-1=3
i=1 i+1=2 j=3 j-1=2
i=1 i+1=2 j=2 j-1=1
i=2 i+1=3 j=10 j-1=9
i=2 i+1=3 j=9 j-1=8
i=2 i+1=3 j=8 j-1=7
i=2 i+1=3 j=7 j-1=6
i=2 i+1=3 j=6 j-1=5
i=2 i+1=3 j=5 j-1=4
i=2 i+1=3 j=4 j-1=3
i=2 i+1=3 j=3 j-1=2
i=3 i+1=4 j=10 j-1=9
i=3 i+1=4 j=9 j-1=8
i=3 i+1=4 j=8 j-1=7
i=3 i+1=4 j=7 j-1=6
i=3 i+1=4 j=6 j-1=5
i=3 i+1=4 j=5 j-1=4
i=3 i+1=4 j=4 j-1=3
i=4 i+1=5 j=10 j-1=9
i=4 i+1=5 j=9 j-1=8
i=4 i+1=5 j=8 j-1=7
i=4 i+1=5 j=7 j-1=6
i=4 i+1=5 j=6 j-1=5
i=4 i+1=5 j=5 j-1=4
i=5 i+1=6 j=10 j-1=9
i=5 i+1=6 j=9 j-1=8
i=5 i+1=6 j=8 j-1=7
i=5 i+1=6 j=7 j-1=6
i=5 i+1=6 j=6 j-1=5
i=6 i+1=7 j=10 j-1=9
i=6 i+1=7 j=9 j-1=8
i=6 i+1=7 j=8 j-1=7
i=6 i+1=7 j=7 j-1=6
i=7 i+1=8 j=10 j-1=9
i=7 i+1=8 j=9 j-1=8
i=7 i+1=8 j=8 j-1=7
i=8 i+1=9 j=10 j-1=9
i=8 i+1=9 j=9 j-1=8
i=9 i+1=10 j=10 j-1=9
変数i,jトレース結果より
バブルソートは、配列の左辺部分から1つづつ最小値を確定させていくことがわかる
また大小比較は、「ある起点」と、「起点から右に1つずれた値」を比較することもわかる。
コメント