ALGORITHM QUICKSORT (ARRAY, FIRST, LAST)
LOW = FIRST+1;
HIGH = LAST;
DO
WHILE (ARRAY[LOW] <= ARRAY[FIRST] AND LOW <= LAST)
LOW = LOW +1
WHILE (ARRAY[HIGH] >= ARRAY[FIRST] AND HIGH > FIRST)
HIGH = HIGH - 1
IF HIGH > LOW
exchange ARRAY[LOW] and ARRAY[HIGH]
UNTIL LOW > HIGH
exchange ARRAY[FIRST] and ARRAY[HIGH]
IF (HIGH - FIRST) > 1 THEN
QUICKSORT(ARRAY, FIRST, HIGH-1)
IF (LAST - HIGH) > 1 THEN
QUICKSORT(ARRAY, HIGH+1, LAST)
END OF ALGORITHM