' NOTE: aryTemp() is zero-based in this example Private Sub SortBtn_Click()
HighestElement = lstFiles.ListCount-1' The Count begins at 1 while arrays begin at 0 ReDim aryTemp(HighestElement)
For i = 0 To HighestElement
aryTemp(i) = lstFiles.List(i)
Next
Quick_Sort aryTemp(), LBound(aryTemp()), UBound(aryTemp())
For i = 0 To HighestElement
lstFiles.List(i) = aryTemp(i)
Next
End Sub
' Single Dimension Sort with Single Compare Private Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last As Long)
Dim Low As Long, High As Long
Dim Temp As Variant, List_Separator As Variant
Low = First
High = Last
List_Separator = SortArray((First + Last) / 2)
Do
Do While (SortArray(Low) < List_Separator)
Low = Low + 1
Loop
Do While (SortArray(High) > List_Separator)
High = High - 1
Loop
If (Low <= High) Then
Temp = SortArray(Low)
SortArray(Low) = SortArray(High)
SortArray(High) = Temp
Low = Low + 1
High = High - 1
End If
Loop While (Low <= High)
If (First < High) Then Quick_Sort SortArray, First, High
If (Low < Last) Then Quick_Sort SortArray, Low, Last
End Sub