Eindimensionale Array sortieren
Leider gibt es keine vorgefertigte Funktion zum Sortieren von Array, zumindest nichts, was auch nur annähernd vernünftig funktioniert. Daher muss man sich selbst mit eigenen Funktionen helfen.
Es gibt verschiedene Möglichkeiten, Array zu sortieren. Diese unterscheiden sich hauptsächlich in der Geschwindigkeit.
Hier einige Beispiele, um eindimensionale Array zu sortieren:
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
Function SortArray(ByRef strArray As Variant) As Variant()
'sortieren von String Array
'eindimensionale Array
'rekursiver Aufruf
Dim tmpArray() As Variant
Dim i As Long
tmpArray = strArray
For i = LBound(tmpArray) To (UBound - 1)
If LCase(strArray(i)) > LCase(strArray(i + 1)) Then
tmpArray(i) = strArray(i + 1)
tmpArray(i + 1) = strArray(i)
strArray = tmpArray
'rekursiver Aufruf
tmpArray = SortArray(strArray)
End If
Next i
SortArray = tmpArray
End Function
Es handelt sich im ersten Beispiel um ein Sortieren mit einer rekursiven Funktion. Das bedeutet, dass die Funktion sich praktisch in der Schleife selbst aufruft. Das wird solange gemacht, bis das rekursive aufzurufende temporäre Array immer kleiner geworden ist. Diese Methode ist recht langsam und nicht für größere Array praktikabel.
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
Function BubbleSort(ByRef strArray As Variant) As Variant()
'sortieren von String Array
'eindimensionale Array
'Bubble-Sortier-Verfahren
Dim z As Long
Dim i As Long
Dim strWert As Variant
For z = UBound(strArray) - 1 To LBound(strArray) Step -1
For i = LBound(strArray) To z
If LCase(strArray(i)) > LCase(strArray(i + 1)) Then
strWert = strArray(i)
strArray(i) = strArray(i + 1)
strArray(i + 1) = strWert
End If
Next i
Next z
BubbleSort = strArray
End Function
Das zweite Beispiel benutzt das sogannte Bubblesort Verfahrten. Diese Art zu sortieren ist erherblich schneller.
Bei beiden Beispielen wird das sortierte Array als Funktionswert zurückgegeben.
Beide Verfahren eignen sich zum Sortieren von Daten oder Zahlen. Das macht keinen Unterschied.
Interessante Links
Für weitere Infos bitte auf den Text klicken
Cookies speichern Informationen lokal auf Ihrem Rechner, ohne die Verwendung kann der Funktionsumfang beeinträchtigt werden. Weitere Informationen
Annehmen