Public Sub SortArray(ByRef Arr() As String, _
ByVal ascending As Boolean) Dim l As Long Dim r As Long l = 0 r = UBound(Arr) If (ascending) Then Call QuickSort(Arr, l, r, 1) Else Call QuickSort(Arr, l, r, -1) End If End Sub Private Sub QuickSort(ByRef Arr() As String, ByVal l As Long, _ ByVal r As Long, ByVal flag As Integer) If (r <= l) Then Exit Sub Dim i As Long Dim j As Long Dim temp As String Dim ret As Integer i = l - 1 j = r Do While (True) Do i = i + 1 ret = StrComp(Arr(i), Arr(r)) ret = ret * flag Loop While (ret < 0) Do While (j > 0) j = j - 1 ret = StrComp(Arr(j), Arr(r)) ret = ret * flag If (ret <= 0) Then Exit Do Loop If (i > j) Then Exit Do temp = Arr(i) Arr(i) = Arr(j) Arr(j) = temp Loop temp = Arr(i) Arr(i) = Arr(r) Arr(r) = temp Call QuickSort(Arr, l, i - 1, flag) Call QuickSort(Arr, i + 1, r, flag) End Sub |