📄 shell.pas
字号:
PROCEDURE shell(n: integer; VAR arr: glnarray);
(* Programs using routine SHELL must define the type
TYPE
glnarray = ARRAY [1..np] OF real;
in the main routine, with np >= n. *)
LABEL 3;
CONST
aln2i=1.442695022;
tiny=1.0e-5;
VAR
nn,m,lognb2,l,k,j,i: integer;
t: real;
BEGIN
lognb2 := trunc(ln(n)*aln2i+tiny);
m := n;
FOR nn := 1 TO lognb2 DO BEGIN
m := m DIV 2;
k := n-m;
FOR j := 1 TO k DO BEGIN
i := j;
3: l := i+m;
IF (arr[l] < arr[i]) THEN BEGIN
t := arr[i];
arr[i] := arr[l];
arr[l] := t;
i := i-m;
IF (i >= 1) THEN GOTO 3
END
END
END
END;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -