☆文字列ソートパック☆
文字列のソートも整数のソートと考え方は同じで、特に難しい処理が必要に なるわけではありません。整数ソートの大小比較コードの部分を、文字列比較 の処理にしてやるだけです。Visual Basicでは、その比較にStrComp 関数を用います。この関数の引数や戻り値は下のようになっています。
(StrComp関数) 引数compareで、大文字小文字やカタカナひらがなの区別をするかどうかを 示します。compare=0の時区別し、compare=1の時区別しません。
一般使用例 StrComp(string1,string2,compare) 簡単な説明 string1とstring2をcompareで
指定されるモードで比較する戻り値 -1 − string1 は string2 より小さい
0 − string1 と string2 は等しい
1 − string1 は string2 より大きい
Null − string1 または string2 は Null
また、string1 が string2 より小さいとか大きいとかいうのは、次のような 感じに解釈できます。
下に、この関数を利用した文字列型バブルソートのアイウエオ順ソートの コードを示します。
string1 は string2 より小さい アイウエオ順やアルファベット順において、
string1がstring2より前の位置string1 は string2 より大きい アイウエオ順やアルファベット順において、
string1がstring2より後の位置
このように文字列型の配列でもほとんど変わりなくソートすることが可能 です。このStrComp関数はC言語のStrCmp関数とも機能的にあまり変わりません。 プログラムコードの移植性に優れているということもアルゴリズムには大切なことです。
'=========================================================== '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
なお、下のサンプルプログラムには、バブル,基本挿入法,シェル,クイックの 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でも問題なく動作すると思います。
なお、このコーナーに掲載されているプログラムコード、およびプログラムファ イルが原因で起きた損害などに関して一切の責任を負うことはできません。
★このコーナーに掲載されているプログラムコード、およびプログラムファ イルを無断で配布・転載することは、原則として禁止です。