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 VariantAs 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 VariantAs 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. 

 



zurück zur Übersicht Datenfelder/Array
Diese Seite zu Mister Wong hinzufügen
Diese Seite zu ecure.del.icio.us hinzufügen
Diese Seite zu webnews hinzufügen
Diese Seite zu Google Bookmarks hinzufügen
Diese Seite zu linkarena hinzufügen
Diese Seite zu Yahoo hinzufügen






Interessante Links

Grundsätzliches zu Array Grundsätzliches zu Array






Für weitere Infos bitte auf den Text klicken

http://www.prawi-officewelt.de
 .::. nach oben .::.
 
 
©2008 - 2024 www.VBA-Wordwelt.de - alle Rechte vorbehalten
 
Kontakt | Impressum
los Suche

Cookies speichern Informationen lokal auf Ihrem Rechner, ohne die Verwendung kann der Funktionsumfang beeinträchtigt werden. Weitere Informationen


Annehmen