Skip to content

Instantly share code, notes, and snippets.

@nobrinskii
Created November 23, 2012 08:26
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nobrinskii/4134517 to your computer and use it in GitHub Desktop.
Save nobrinskii/4134517 to your computer and use it in GitHub Desktop.
文字列の配列をクイックソートする
'------------------------------------------------------------------------------
'文字列として配列をクイックソート
'------------------------------------------------------------------------------
'【引数】配列(参照渡し)、最小インデックス、最大インデックス
'【戻り値】
'【備考】
Public Sub QSortTexts(ByRef varArray As Variant, _
lngMini As Long, lngMax As Long)
Dim i As Long
Dim j As Long
Dim varBaseValue As Variant
Dim varTmp As Variant
varBaseValue = CStr(varArray(Int((lngMini + lngMax) / 2)))
i = lngMini
j = lngMax
Do
Do While StrComp(CStr(varArray(i)), varBaseValue) = -1
i = i + 1
Loop
Do While StrComp(CStr(varArray(j)), varBaseValue) = 1
j = j - 1
Loop
If i >= j Then Exit Do
varTmp = varArray(i)
varArray(i) = varArray(j)
varArray(j) = varTmp
i = i + 1
j = j - 1
Loop
If (lngMini < i - 1) Then
Call QSortTexts(varArray, lngMini, i - 1)
End If
If (lngMax > j + 1) Then
Call QSortTexts(varArray, j + 1, lngMax)
End If
End Sub
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment