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
/
SHELSORT.SRC
< prev
next >
Wrap
Text File
|
1986-01-06
|
896b
|
36 lines
PROCEDURE SHELLSORT(VAR SORTBUF : KEYARRAY; RECS : INTEGER);
VAR I,J,K,L : INTEGER;
SPREAD : INTEGER;
PROCEDURE INT_SWAP(VAR RR,SS : KEYREC);
VAR T : KEYREC;
BEGIN
T := RR;
RR := SS;
SS := T
END;
BEGIN
SPREAD := RECS DIV 2; { First spread is half record count }
WHILE SPREAD > 0 DO { Do until spread goes to zero: }
BEGIN
FOR I := SPREAD + 1 TO RECS DO
BEGIN
J := I - SPREAD;
WHILE J > 0 DO
BEGIN { Test & swap across the array }
L := J + SPREAD;
IF SORTBUF[J].KEY <= SORTBUF[L].KEY THEN J := 0 ELSE
INT_SWAP(SORTBUF[J],SORTBUF[L]);
J := J - SPREAD
END
END;
SPREAD := SPREAD DIV 2 { Halve spread for next pass }
END
END;
FOUND := TRUE; { Set foun