PROCEDURE SHELL(N,T:INTEGER;F:LL;VAR L:LL); VAR I,J,S,H,KEY:INTEGER; BEGIN FOR S:=T DOWNTO 1 DO BEGIN H:=F[S]; FOR J:=H+1 TO N DO BEGIN KEY:=L[J]; I:=J-H; WHILE (I > 0) AND (L[I] > KEY) DO BEGIN L[I+H]:=L[I]; I:=I-H END; L[I+H]:=KEY END END END;