**[**Back to SORTING SWAG index**]** **[**Back to Main SWAG index**]** **[**Original**]**

*{
DR> Does anyone have a good routine to sort a string array into
DR> alphabetical order - I really only know how to do a bubble
DR> sort, and that's a bit slow for >1000 in the array...
DR> Preferably written in standard Pascal, as I would like to
DR> understand it,
Here's the conventional QuickSort (which is also included in the full
TP/BP packages as examples):
}
***var **T : **string**; *{ swap variable }
*GUESS : **array**[1..1000] **of **^**string**; *{ pointer array of strings }
***procedure **L_HSORT (LEFT,RIGHT : word); *{ Lo-Hi QuickSort }
***var **LOWER,UPPER,MIDDLE : word;
PIVOT : **string**;
**begin
**LOWER := LEFT; UPPER := RIGHT; MIDDLE := (LEFT+RIGHT) **div **2;
PIVOT := GUESS[MIDDLE]^;
**repeat
while **GUESS[LOWER]^ < PIVOT **do **Inc(LOWER);
**while **PIVOT < GUESS[UPPER]^ **do **Dec(UPPER);
**if **LOWER <= UPPER **then
begin
**T := GUESS[LOWER]^; GUESS[LOWER]^ := GUESS[UPPER]^;
GUESS[UPPER]^ := T; Inc (LOWER); Dec (UPPER);
**end**;
**until **LOWER > UPPER;
**if **LEFT < UPPER **then **L_HSORT (LEFT, UPPER);
**if **LOWER < RIGHT **then **L_HSORT (LOWER, RIGHT)
**end**; *{ L_HSORT }
*

**[**Back to SORTING SWAG index**]** **[**Back to Main SWAG index**]** **[**Original**]**