Shellsort



Sub SortArray(strArray() As String)
Dim lngIncr As Long
Dim lngIelem1 As Long
Dim lngIelem2 As Long
Dim lngI As Long
Dim strHold As String
lngIncr = UBound(strArray) \ 2
Do
If lngIncr = 0 Then Exit Sub
For lngI = lngIncr + 1 To UBound(strArray)
lngIelem1 = lngI - lngIncr
SortArray1:
If lngIelem1 > 0 Then
lngIelem2 = lngIelem1 + lngIncr
If strArray(lngIelem1) > strArray(lngIelem2) Then
' switch elements

strHold = strArray(lngIelem1)
strArray(lngIelem1) = strArray(lngIelem2)
strArray(lngIelem2) = strHold
lngIelem1 = lngIelem1 - lngIncr
GoTo SortArray1
End If
End If
Next
lngIncr = lngIncr \ 2
Loop
End Sub

(shellsort.html)- by Paolo Puglisi - Modifica del 25/3/2019