Here's QuickSort:
Sub DemoQS()
Dim astr() As String
astr = Split("s,e,r,t,a,q,v,b,y,o,p", ",")
QuickSort astr, 0, UBound(astr)
End Sub
Sub QuickSort(ByRef av As Variant, _
ByVal iFrst As Long, _
ByVal iLast As Long, _
Optional bAsc As Boolean = True)
' adapted from http://www.vba-programmer.com/Snippets/Code_VB/Quick_Sort_Single.html
Dim iLo As Long
Dim iHi As Long
Dim Temp As Variant
Dim vSep As Variant
iLo = iFrst
iHi = iLast
vSep = av((iFrst + iLast) / 2)
Do
Do While IIf(bAsc, av(iLo) < vSep, av(iLo) > vSep)
iLo = iLo + 1
Loop
Do While IIf(bAsc, av(iHi) > vSep, av(iHi) < vSep)
iHi = iHi - 1
Loop
If iLo <= iHi Then
Temp = av(iLo)
av(iLo) = av(iHi)
av(iHi) = Temp
iLo = iLo + 1
iHi = iHi - 1
End If
Loop While iLo <= iHi
If iFrst < iHi Then QuickSort av, iFrst, iHi, bAsc
If iLo < iLast Then QuickSort av, iLo, iLast, bAsc
End Sub
Bookmarks