待望されているのに実装処理系のない、いろはソートです。
ジェネリックを使えばいとかんたん。
しかし、アルゴリズムとは無縁のコードになるんですよね。肝心のアルゴリズムはBlackboxになってしまいます。
業務系VBerはますます、アルゴがら離れていく?
Public Class sort_Class
'********
Public dct重み As Dictionary(Of Char, Byte)
Public Sub New()
dct重み = New Dictionary(Of Char, Byte)
dct重み.Add("い"c, 0) : dct重み.Add("ろ"c, 1) : dct重み.Add("は"c, 2) : dct重み.Add("に"c, 3) : dct重み.Add("ほ"c, 4) : dct重み.Add("へ"c, 5)
dct重み.Add("と"c, 6) : dct重み.Add("ち"c, 7) : dct重み.Add("り"c, 8) : dct重み.Add("ぬ"c, 9) : dct重み.Add("る"c, 10) : dct重み.Add("を"c, 11)
dct重み.Add("わ"c, 12) : dct重み.Add("か"c, 13) : dct重み.Add("よ"c, 14) : dct重み.Add("た"c, 15) : dct重み.Add("れ"c, 16) : dct重み.Add("そ"c, 17)
dct重み.Add("つ"c, 18) : dct重み.Add("ね"c, 19) : dct重み.Add("な"c, 20) : dct重み.Add("ら"c, 21) : dct重み.Add("む"c, 22) : dct重み.Add("う"c, 23)
dct重み.Add("ゐ"c, 24) : dct重み.Add("の"c, 25) : dct重み.Add("お"c, 26) : dct重み.Add("く"c, 27) : dct重み.Add("や"c, 28) : dct重み.Add("ま"c, 29)
dct重み.Add("け"c, 30) : dct重み.Add("ふ"c, 31) : dct重み.Add("こ"c, 32) : dct重み.Add("え"c, 33) : dct重み.Add("て"c, 34) : dct重み.Add("あ"c, 35)
dct重み.Add("さ"c, 36) : dct重み.Add("き"c, 37) : dct重み.Add("ゆ"c, 38) : dct重み.Add("め"c, 39) : dct重み.Add("み"c, 40) : dct重み.Add("し"c, 41)
dct重み.Add("ゑ"c, 42) : dct重み.Add("ひ"c, 43) : dct重み.Add("も"c, 44) : dct重み.Add("せ"c, 45) : dct重み.Add("す"c, 46) : dct重み.Add("ん"c, 47)
End Sub
Function 比べる(ByVal x As String, ByVal y As String) As Integer
Dim max As Integer = x.Length
If max < y.Length Then max = y.Length
'長さ調整
If x.Length < max Then x.PadRight(max, " "c)
If y.Length < max Then y.PadRight(max, " "c)
For i As Integer = 0 To max - 1
Dim bxc As Byte = dct重み(x(i))
Dim byc As Byte = dct重み(y(i))
If bxc = byc Then Continue For
If bxc > byc Then
Return 1
ElseIf bxc < byc Then
Return -1
End If
Next
Return 0
End Function
'***************
Public Sub RUN()
Dim stringList As New List(Of String)
stringList.Add("あさきり")
stringList.Add("あさり")
stringList.Add("あさひ")
stringList.Add("いろは")
stringList.Add("うえの")
stringList.Add("えいこ")
stringList.Add("おおさか")
stringList.Add("かわせ")
stringList.Add("きって")
stringList.Add("くらぶ")
stringList.Add("けしき")
stringList.Add("こども")
stringList.Sort(AddressOf 比べる)
stringList.ForEach(AddressOf Console.WriteLine)
End Sub
End Class