ソート

ソート

情処三大ソート

1. 選択ソート(+音声解説)
    Dim data(10) As Integer
    Dim i, j As Integer
    Dim maxIndex As Integer
    Dim temp As Integer

    Call SetData(data)

    '(降順)
    For i = 1 To UBound(data) - 1

        maxIndex = i      '未整列部分の先頭を最大値候補とする(*1)

        For j = i + 1 To UBound(data)
            '比較演算子により、昇順・降順が決まる
            If data(j) > data(maxIndex) Then 
                maxIndex = j    '(*2)
            End If

        Next j

        '交換(*3)
        temp = data(i)
        data(i) = data(maxIndex)
        data(maxIndex) = temp

    Next i

    ' ソート結果出力
    For i = 1 To UBound(data)
        Debug.Print data(i)
    Next i
🚀 選択ソート(Selection Sort)特徴
  1. 内側ループでは最小値または最大値の位置を探している。
  2. 内側ループでは交換を行わず、位置の記録のみをおこなっている。
  3. 内側ループ終了後、現在の位置と記録した位置を1回だけ交換している。
  4. 最小値または最大値の探索は内側ループ、 交換は外側ループで1回だけ行う。

VOICEVOX:四国めたん

📝データ 設定/出力
Sub SetData(ByRef data() As Integer)
    data(1) = 34
    data(2) = 7
    data(3) = 23
    data(4) = 32
    data(5) = 5
    data(6) = 62
    data(7) = 78
    data(8) = 4
    data(9) = 12
    data(10) = 11
 End Sub
  78
  62
  34
  32
  23
  12
  11
  7
  5
  4
2. 挿入ソート(+音声解説)
    Dim data(10) As Integer   'data(0)  一時変数
    Dim i, j As Integer

    Call SetData(data)

    '(降順)
    For i = 2 To UBound(data)  
        data(0) = data(i)   '比較元(*1)
        j = i - 1   

        Do While j >= 1
            '比較演算子により、昇順・降順が決まる
            If data(j) < data(0) Then
            
                data(j + 1) = data(j)      '(*3) 

                j = j - 1       '(*2)
            Else
                Exit Do
            End If
        Loop
       
        data(j + 1) = data(0)    '上書き(*4)
    Next i

    ' ソート結果出力
    For i = 1 To UBound(data)
        Debug.Print data(i)
    Next i
🚀 挿入ソート(Insertion Sort)特徴
  1. 内側ループの処理前に比較元データを一時変数に記憶している。
  2. 内側ループではStep -1 や 処理変数を -1させている。
  3. 前の要素を右にずらしている。
  4. 内側ループが終了すれば、一時変数の値を 処理変数+1の値に上書きしている。

VOICEVOX:四国めたん

📝データ 設定/出力
Sub SetData(ByRef data() As Integer)
    data(1) = 34
    data(2) = 7
    data(3) = 23
    data(4) = 32
    data(5) = 5
    data(6) = 62
    data(7) = 78
    data(8) = 4
    data(9) = 12
    data(10) = 11
 End Sub
  78
  62
  34
  32
  23
  12
  11
  7
  5
  4
3. バブルソート(+音声解説)
    Dim data(10) As Integer
    Dim i, j As Integer
    Dim maxIndex As Integer
    Dim temp As Integer

    Call SetData(data)

    '(降順)
    For i = 1 To UBound(data) - 1

        For j = UBound(data) To i + 1 Step -1   '(*2)
            '比較演算子により、昇順・降順が決まる
            If data(j - 1) < data(j) Then

                '交換(*1)(*3)
                temp = data(j)
                data(j) = data(j - 1)
                data(j - 1) = temp

            End If

        Next j

    Next i

    ' ソート結果出力
    For i = 1 To UBound(data)
        Debug.Print data(i)
    Next i
🚀 バブルソート(Bubble Sort)特徴
  1. 条件を満たせば即座に交換している。
  2. 外側ループに応じて内側ループが短くなる。
  3. 大きい値または小さい値が 内側ループ範囲の最後尾に移動する。

VOICEVOX:四国めたん

📝データ 設定/出力
Sub SetData(ByRef data() As Integer)
    data(1) = 34
    data(2) = 7
    data(3) = 23
    data(4) = 32
    data(5) = 5
    data(6) = 62
    data(7) = 78
    data(8) = 4
    data(9) = 12
    data(10) = 11
 End Sub
  78
  62
  34
  32
  23
  12
  11
  7
  5
  4
4. 過去問【4】

📦出力画面

📍第72回【4】問2
第72回【4】問2_01


📘 ダウンロード教材について

この教材は、全国商業高等学校協会の情報処理検定の過去問題をもとに作成された、
学習支援用のマクロ付きExcelファイルです。

  • マクロは 売上集計や平均点の計算など、検定形式に沿った処理を行います。
  • 外部との通信やファイル操作は一切行いません。
  • 教育目的で無償提供しており、改変・再配布はご遠慮ください。

ご利用の際は、マクロを有効にする必要があります。学校のPCで使用する場合は、先生にご確認ください。

ファイル名 サイズ (KB) ダウンロード
第72回【4】問2.zip 12
第71回【4】問1.zip 14
第70回【4】問2.zip 12

戻る


© 2026 - Blazor 情処の味方

サポーターズ
Thread Light
An unhandled error has occurred. Reload 🗙