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