📄 indexx.pas
字号:
PROCEDURE indexx(n: integer; arrin: glsarray; VAR indx: gliarray);
(* Programs using routine INDEXX must define the types
TYPE
glsarray = ARRAY [1..np] OF real;
gliarray = ARRAY [1..np] OF integer;
in the main routine, with np >= n. *)
LABEL 99;
VAR
l,j,ir,indxt,i: integer;
q: real;
BEGIN
FOR j := 1 TO n DO BEGIN
indx[j] := j
END;
l := (n DIV 2) + 1;
ir := n;
WHILE true DO BEGIN
IF (l > 1) THEN BEGIN
l := l-1;
indxt := indx[l];
q := arrin[indxt]
END ELSE BEGIN
indxt := indx[ir];
q := arrin[indxt];
indx[ir] := indx[1];
ir := ir-1;
IF (ir = 1) THEN BEGIN
indx[1] := indxt;
GOTO 99
END
END;
i := l;
j := l+l;
WHILE (j <= ir) DO BEGIN
IF (j < ir) THEN BEGIN
IF (arrin[indx[j]] < arrin[indx[j+1]]) THEN j := j+1
END;
IF (q < arrin[indx[j]]) THEN BEGIN
indx[i] := indx[j];
i := j;
j := j+j
END ELSE
j := ir+1
END;
indx[i] := indxt
END;
99: END;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -