§Algorithm§


☆基本挿入法☆


 基本挿入法とは、大きい順または小さい順に並んでいる数列に、ある数を順に 比較しながらその数列に挿入し並び替えていくソートプログラムの1つです。 ソート対象の数列が最初から順に並んでいるわけではないので、最初に考える 数列の要素は、配列の0番目の数です。まず、その要素と次の要素を比較して 要素が2つの数列をつくります。次に3番目の要素を比較挿入し・・・ というように数列の要素を順に増やして並び替えを行います。 以下の図では、大きいもの順にソートする方法を示しています。

Visual Basicのプログラムコードでは以下のようにまとめられます。

'===========================================================
'BasicSort   基本挿入方で整数をソートする
'---------引数----------------------------------------------
'data()   ここのデータをソートする
'Count    要素の数
'flag     True-昇順ソート,False-降順ソート
'===========================================================
Public Sub BasicSort(data() As Integer, Count As Integer, _
           flag As Boolean)
  Dim i As Integer, j As Integer
  Dim temp As Integer

  j = 1
  If flag = False Then
    Do While j < Count
      i = j - 1
      Do While i >= 0
        If data(i + 1) < data(i) Then
          temp = data(i + 1)
          data(i + 1) = data(i)
          data(i) = temp
        Else
          Exit Do
        End If
        i = i - 1
      Loop
      j = j + 1
    Loop
  Else
    Do While j < Count
      i = j - 1
      Do While i >= 0
        If data(i + 1) > data(i) Then
          temp = data(i + 1)
          data(i + 1) = data(i)
          data(i) = temp
        Else
          Exit Do
        End If
        i = i - 1
      Loop
      j = j + 1
    Loop
  End If
End Sub
 バブルソートの場合、上のような数列だと必ず6回の比較を行いますが、 基本挿入方だと6回以下の比較ですみます。上のものだと5回の比較となっ ています。つまり、バブルソートより基本挿入法でソートした方が多少は 速く処理できるということになります。(でも、あんまり変わらないけど・・・)


(サンプルプログラムの動作確認)

機種 PC-9821V13S
OS Windows95
開発ツール Visual Basic Ver.4.0
更新日 99/12/21

ダウンロード SbSort.lzh(2.09KB)

Visual Basic Ver.5.0,Ver.6.0でも問題なく動作すると思います。
なお、このコーナーに掲載されているプログラムコード、およびプログラムファ イルが原因で起きた損害などに関して一切の責任を負うことはできません。

★このコーナーに掲載されているプログラムコード、およびプログラムファ イルを無断で配布・転載することは、原則として禁止です。


Algorithmインデックス トップ


Copyright(C)1999 Tomoya. All rights reserved.