[Back to SORTING SWAG index] [Back to Main SWAG index] [Original]
{
This is using the concept of a PoINter Array (an Array of PoINters). It
allows For a _very_ large amount of data, sINce you allocate each Record space
of the Heap. You must allocate each space For each Record as you create the
Record:
}
New (INFOSTUFF[3]); { allocates space For 3rd Record }
With INFOSTUFF[6]^ do { works With 6th Record }
begin
NAME := 'Patrick Edwards'; IDNUM := 60000; MOM := ''
end;
The sort could be:
Var T : INFO;
Procedure L_HSorT (LEFT,RIGHT : Word); { Lo-Hi QuickSort }
Var LOWER,UPPER,MIDDLE : Word;
PIVOT : INFO;
begin
LOWER := LEFT; UPPER := RIGHT; MIDDLE := (LEFT+RIGHT) div 2;
PIVOT := INFOSTUFF[MIDDLE]^;
Repeat
While INFOSTUFF[LOWER]^.NAME < PIVOT.NAME do INc(LOWER);
While PIVOT.NAME < INFOSTUFF[UPPER]^.NAME do Dec(UPPER);
if LOWER <= UPPER then
begin
T := INFOSTUFF[LOWER]^; INFOSTUFF[LOWER]^ := INFOSTUFF[UPPER]^;
INFOSTUFF[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 }
{ called as:
L_HSorT (1,10);
}
[Back to SORTING SWAG index] [Back to Main SWAG index] [Original]