§Algorithm§


☆文字列ソートパック☆


 文字列のソートも整数のソートと考え方は同じで、特に難しい処理が必要に なるわけではありません。整数ソートの大小比較コードの部分を、文字列比較 の処理にしてやるだけです。Visual Basicでは、その比較にStrComp 関数を用います。この関数の引数や戻り値は下のようになっています。

(StrComp関数)
一般使用例 StrComp(string1,string2,compare)
簡単な説明 string1とstring2をcompareで
指定されるモードで比較する
戻り値 -1 − string1 は string2 より小さい
 0 − string1 と string2 は等しい
 1 − string1 は string2 より大きい
Null − string1 または string2 は Null

 引数compareで、大文字小文字やカタカナひらがなの区別をするかどうかを 示します。compare=0の時区別し、compare=1の時区別しません。
 また、string1 が string2 より小さいとか大きいとかいうのは、次のような 感じに解釈できます。

string1 は string2 より小さい アイウエオ順やアルファベット順において、
string1がstring2より前の位置
string1 は string2 より大きい アイウエオ順やアルファベット順において、
string1がstring2より後の位置

 下に、この関数を利用した文字列型バブルソートのアイウエオ順ソートの コードを示します。

'===========================================================
'upBubbleSortStr   指定された文字列型配列をソートする
'                  50 音順で、大文字小文字、文字幅、カタカナ、
'                  ひらがなを区別しない並べ替え順(アイウエオ順)
'<大文字小文字等を区別したい場合>
'   StrComp(data(i), data(j), 0) <- 引数を変更する
'---------引数----------------------------------------------
'data()   ここのデータをソートする
'Count    要素の数
'===========================================================
Public Sub upBubbleSortStr(data() As String, _
                           Count As Integer)
    Dim i As Integer, j As Integer
    Dim temp As String

    j = 0
    '要素0から順に直接的にソートする
    Do While j < Count - 1
        i = j + 1
        Do While i < Count
            If StrComp(data(j), data(i), 1) = 1 Then
                temp = data(j)
                data(j) = data(i)
                data(i) = temp
            End If
            i = i + 1
        Loop
        j = j + 1
    Loop
End Sub

 このように文字列型の配列でもほとんど変わりなくソートすることが可能 です。このStrComp関数はC言語のStrCmp関数とも機能的にあまり変わりません。 プログラムコードの移植性に優れているということもアルゴリズムには大切なことです。
 なお、下のサンプルプログラムには、バブル,基本挿入法,シェル,クイックの 4種のソートの文字列版が含まれています。


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

機種 PC-9821V13S
OS Windows95
開発ツール Visual Basic Ver.4.0
更新日 00/1/22

ダウンロード StrSortPack.lzh(4.44KB)

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

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


Algorithmインデックス トップ


Copyright(C)1999 Tomoya. All rights reserved.