You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.4 KiB
56 lines
1.4 KiB
2 years ago
|
C Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
||
|
C of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
||
|
C NTESS, the U.S. Government retains certain rights in this software.
|
||
|
C
|
||
|
C See packages/seacas/LICENSE for details
|
||
|
|
||
|
SUBROUTINE INDEXI_FQ (NMAX, IARRAY, N, INDX)
|
||
|
C***********************************************************************
|
||
|
|
||
|
C INDEXI - SORT THE N ELEMENTS OF IARRAY WHOSE POSITION IS STORED
|
||
|
C IN INDX. ONLY THE ORDER OF THE INDEX ARRAY, INDX, IS
|
||
|
C MODIFIED
|
||
|
|
||
|
C***********************************************************************
|
||
|
|
||
|
DIMENSION IARRAY(NMAX), INDX(N)
|
||
|
|
||
|
L = N/2 + 1
|
||
|
IR = N
|
||
|
100 CONTINUE
|
||
|
IF (L .GT. 1) THEN
|
||
|
L = L - 1
|
||
|
INDXT = INDX(L)
|
||
|
JQ = IARRAY(INDXT)
|
||
|
ELSE
|
||
|
INDXT = INDX(IR)
|
||
|
JQ = IARRAY(INDXT)
|
||
|
INDX(IR) = INDX(1)
|
||
|
IR = IR - 1
|
||
|
IF (IR .EQ. 1) THEN
|
||
|
INDX(1) = INDXT
|
||
|
RETURN
|
||
|
END IF
|
||
|
END IF
|
||
|
|
||
|
I = L
|
||
|
J = L + L
|
||
|
110 CONTINUE
|
||
|
IF (J .LE. IR) THEN
|
||
|
IF (J .LT. IR) THEN
|
||
|
IF (IARRAY(INDX(J)) .LT. IARRAY(INDX(J + 1))) J = J + 1
|
||
|
END IF
|
||
|
IF (JQ .LT. IARRAY(INDX(J))) THEN
|
||
|
INDX(I) = INDX(J)
|
||
|
I = J
|
||
|
J = J + J
|
||
|
ELSE
|
||
|
J = IR + 1
|
||
|
END IF
|
||
|
GO TO 110
|
||
|
END IF
|
||
|
INDX(I) = INDXT
|
||
|
GO TO 100
|
||
|
|
||
|
END
|