home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
TURBOPAS
/
TP-UTIL.ARK
/
QUIKSORT.SRC
< prev
next >
Wrap
Text File
|
1986-01-06
|
1KB
|
54 lines
PROCEDURE QUIKSORT(VAR SORTBUF : KEYARRAY;
RECS : INTEGER);
PROCEDURE INT_SWAP(VAR RR,SS : KEYREC);
VAR T : KEYREC;
BEGIN
T := RR;
RR := SS;
SS := T
END;
PROCEDURE DOSORT(LO, HI : INTEGER);
VAR I,J : INTEGER;
PIVOT : KEYREC;
BEGIN
{ Can't sort if LO is greater than or equal to HI... }
IF LO < HI THEN
BEGIN
I := LO;
J := HI;
PIVOT := SORTBUF[J];
REPEAT
WHILE (I < J) AND (SORTBUF[I].KEY <= PIVOT.KEY) DO I := I + 1;
WHILE (J > I) AND (SORTBUF[J].KEY >= PIVOT.KEY) DO J := J - 1;
IF I < J THEN INT_SWAP(SORTBUF[I],SORTBUF[J]);
UNTIL I >= J;
INT_SWAP(SORTBUF[I],SORTBUF[HI]);
IF (I - LO < HI - I) THEN
BEGIN
DOSORT(LO,I-1); { Recursive calls to DOSORT! }
DOSORT(I+1,HI)
END
ELSE
BEGIN
DOSORT(I+1,HI); { Recursive calls to DOSORT! }
DOSORT(LO,I-1)
END
END
END;
BEGIN
DOSORT(1,RECS);
END; { QUIKSORT }
CHR(186);
LINE_CROSS := CHR(206);
T_DOWN := CHR(203);
T_UP