GLBasic Benutzerhandbuch

Main sections

SORTARRAY

SORTARRAY array[], cmp%



Sortiert ein Feld aufsteigend. D.h. feld[0] hat das kleinste Element.

Die Sortierung kann auch auf Felder von TYPEs angewandt werden. Dabei wird die erste "Member" - variable des TYPEs für den Verlgeich verwendet.

Der Parameter cmp% kann verwendet werden um eine eigene Vergleichsfunktion zu verwenden, um somit das Verlahten der Sortierung zu beeinflussen. Lässt man den Parameter 0, wird wie oben beschrieben sortiert.
cmp% muss eine Adresse einer Funktion sein, die 2x BYREF den Typen der Feldeinträge akzeptiert.

Achtung: Wenn die Funktion andere Parameter hat, stürzt das Programm ab.

LOCAL arr[]

    // Normal Sortierung
    Fill(arr[])
    SORTARRAY arr[], 0
    FOR i=0 TO LEN(arr[])-1
        PRINT arr[i], 0, i*16
    NEXT
    
    // sortieren mit Funktion
    Fill(arr[])
    SORTARRAY arr[], ADDRESSOF(compare)
    FOR i=0 TO LEN(arr[])-1
        PRINT arr[i], 100, i*16
    NEXT
    
    // Rückwärts Sortieren
    Fill(arr[])
    SORTARRAY arr[], ADDRESSOF(inverse_compare)
    FOR i=0 TO LEN(arr[])-1
        PRINT arr[i], 200, i*16
    NEXT


    SHOWSCREEN
    MOUSEWAIT
    
FUNCTION Fill: arr[]
    DIM arr[0]
    FOR i=0 TO 10
        DIMPUSH arr[], RND(100)
    NEXT
ENDFUNCTION


FUNCTION compare: BYREF a, BYREF b
    IF a<b THEN RETURN -1
    IF a>b THEN RETURN 1
    RETURN 0
ENDFUNCTION


FUNCTION inverse_compare: BYREF a, BYREF b
    IF a<b THEN RETURN 1
    IF a>b THEN RETURN -1
    RETURN 0
ENDFUNCTION

See also...