Die schnelle Sortiervariante: (abgekupfert bei einem Delphi-Listing)
// --------------------------------- //
// Project: sort
// Start: Monday, August 20, 2007
// IDE Version: 4.192
DIM a[1000]
FOR i = 0 TO 999
a[i] = RND(1000)
NEXT
t1 = GETTIMERALL()
quicksort(a[], 0, BOUNDS(a[], 0) - 1)
//bubblesort(a[])
t2 = GETTIMERALL()
t3 = t2 - t1
PRINT "Zeit für Quicksort: " + FORMAT$(10, 2, t3) + " Millisekunden", 0 ,0
SHOWSCREEN
KEYWAIT
WHILE TRUE
x = 0
y = 0
FOR i = 0 TO 999
PRINT a[i], x, y
INC y, 10
IF y > 470
y = 0
INC x, 30
ENDIF
NEXT
SHOWSCREEN
WEND
// ------------------------------------------------------------- //
// -=# QUICKSORT #=-
// ------------------------------------------------------------- //
FUNCTION quicksort: array[], low, high
LOCAL lo, hi, piv, t
lo = low
hi = high
piv = array[high]
WHILE TRUE
WHILE array[lo] < piv
INC lo, 1
WEND
WHILE array[hi] > piv
DEC hi, 1
WEND
IF lo <= hi
t = array[lo]
array[lo] = array[hi]
array[hi] = t
INC lo, 1
DEC hi, 1
ENDIF
IF lo > hi THEN BREAK
WEND
IF hi > low THEN quicksort(array[], low, hi)
IF lo < high THEN quicksort(array[], lo, high)
ENDFUNCTION // QUICKSORT