【Excel VBA】バブルソートのループ処理イメージの骨格

バブルソートのアルゴリズムについて、骨格となるループ処理部分を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つずれた値」を比較することもわかる。

コメント

タイトルとURLをコピーしました