indexx.pas
来自「Delphi Pascal 数据挖掘领域算法包 数值算法大全」· PAS 代码 · 共 48 行
PAS
48 行
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 + =
减小字号Ctrl + -
显示快捷键?