Visual Basic for Applications/氣泡排序一維陣列
外觀
本頁討論的是對一維陣列的排序。這些通常用於將列表放入具有Array方法的變體中。在VBA中找到這樣的排序例程比較少見,因為大多數排序是在二維中進行的。
- 過程BubbleSort1DArray()使用最慢的排序方法。但是,這裡這樣做似乎沒有缺點,因為很少有列表能達到很大的尺寸。有升序或降序排序選項,以及返回方法。如果提供了一個返回陣列,它將被使用,否則將透過在其中返回來更改輸入陣列。
Function BubbleSort1DArray(vIn As Variant, bAscending As Boolean, Optional vRet As Variant) As Boolean
' Sorts the single dimension list array, ascending or descending
' Returns sorted list in vRet if supplied, otherwise in vIn modified
Dim First As Long, Last As Long
Dim i As Long, j As Long, bWasMissing As Boolean
Dim Temp As Variant, vW As Variant
First = LBound(vIn)
Last = UBound(vIn)
ReDim vW(First To Last, 1)
vW = vIn
If bAscending = True Then
For i = First To Last - 1
For j = i + 1 To Last
If vW(i) > vW(j) Then
Temp = vW(j)
vW(j) = vW(i)
vW(i) = Temp
End If
Next j
Next i
Else 'descending sort
For i = First To Last - 1
For j = i + 1 To Last
If vW(i) < vW(j) Then
Temp = vW(j)
vW(j) = vW(i)
vW(i) = Temp
End If
Next j
Next i
End If
'find whether optional vRet was initially missing
bWasMissing = IsMissing(vRet)
'transfers
If bWasMissing Then
vIn = vW 'return in input array
Else
ReDim vRet(First To Last, 1)
vRet = vW 'return with input unchanged
End If
BubbleSort1DArray = True
End Function