BubleSort2




Sub BubbleSort(arr As Variant, Optional numEls As Variant, _
Optional descending As Boolean)

Dim value As Variant
Dim index As Long
Dim firstItem As Long
Dim indexLimit As Long, lastSwap As Long

' account for optional arguments

If IsMissing(numEls) Then numEls = UBound(arr)
firstItem = LBound(arr)
lastSwap = numEls

Do
indexLimit = lastSwap - 1
lastSwap = 0
For index = firstItem To indexLimit
value = arr(index)
If (value > arr(index + 1)) Xor descending Then
' if the items are not in order, swap them

arr(index) = arr(index + 1)
arr(index + 1) = value
lastSwap = index
End If
Next
Loop While lastSwap
End Sub

BubbleSort is especially convenient with small arrays (1,000
items or fewer) or with arrays that are already almost sorted
NUMELS is the index of the last item to be sorted, and is
useful if the array is only partially filled.
Works with any kind of array, except UDTs and fixed-length
strings, and including objects if your are sorting on their
default property. String are sorted in case-sensitive mode.
You can write faster procedures if you modify the first two lines
to account for a specific data type, eg.

'Sub BubbleSortS(arr() As Single, Optional numEls As Variant,

'Optional descending As Boolean)

'Dim value As Single












( bublesort2.html )- by Paolo Puglisi - Modifica del 17/12/2023