I like this sorting routine as an option to the QuickSort for a couple of reasons. First, it's easy to code (about a dozen or so lines). Second, it's not such a memory hog. Third, it runs faster than the QuickSort when the array values are almost already sorted, so it takes advantage of the existing array's values. My super sort routine resembles the old Shell sort, but I modified it a few years ago to make it run even faster.

To test it, design a form with a list box, two command buttons, and a label. Set the list box's Sorted property to true and use it as a benchmark. Enjoy.

Code:
Dim Jump As Long, Temp As String
Dim SortArray() As String, Swapped As Boolean, StartTime As Double
' Change these as you see fit
Const StringLength = 9
Const ListSize = 50000
Private Sub Command1_Click()
List1.Clear
'Generate a random string array to sort
ReDim SortArray(ListSize)
For I = 1 To ListSize
    For J = 1 To StringLength
        SortArray(I) = SortArray(I) & Chr(Int(Rnd * 26) + 65)
    Next
Next
StartTime = Now
Jump = ListSize
While Jump
    Jump = Jump \ 2
    Swapped = True
    While Swapped
        Swapped = False
        For I = 1 To ListSize - Jump
            If SortArray(I) > SortArray(I + Jump) Then
                Temp = SortArray(I)
                SortArray(I) = SortArray(I + Jump)
                SortArray(I + Jump) = Temp
                Swapped = True
            End If
        Next
    Wend
Wend
Label1.Caption = "Code Doc's sort required " & Format$(Now - StartTime, "hh:mm:ss") & " to complete."
' This sorting routine sorts 50000, 9-character random strings in less than 11 seconds.
For I = 1 To ListSize
    List1.AddItem SortArray(I)
Next
End Sub

Private Sub Command2_Click()
List1.Clear
'Generate a random string array to sort
ReDim SortArray(ListSize)
For I = 1 To ListSize
    For J = 1 To StringLength
        SortArray(I) = SortArray(I) & Chr(Int(Rnd * 26) + 65)
    Next
Next
StartTime = Now
For I = 1 To ListSize
    List1.AddItem SortArray(I)
Next
Label1.Caption = "Sorted list box required " & Format$(Now - StartTime, "hh:mm:ss") & " to complete."
' The sorted list box will sort 50000, 9-character random strings in less than 10 seconds.
End Sub

Private Sub Form_Load()
Command1.Caption = "Code Doc's Sort"
Command2.Caption = "Sorted List Box"
' Code Doc is running a Pentium 4 at 1.8 GHz.
End Sub
The routine above uses a string array, but you can modify it for a numerical array. I used strings as a worst-case scenario. With numerical arrays, Code Doc's super sort enjoys an aven bigger advantage over the list box because the numerical values would have to be converted to strings to sort and display the list.

Note also that Jump is halved on each iteration of the sort (Jump \ 2). I have played around with this value and on occasion cut the sort time in half. But, if you get greedy, the sort will sometimes miss now and then. Halving the interval guarantees success.