Download genor2.eso

Back to the list

   1 : C GENOR2    SOURCE    AM        08/12/19    21:16:40     6237           
   2 :       SUBROUTINE GENOR2(I1,I2,N)
   3 : C----------------------------------------------------
   4 : C
   5 : C     ON ORDONNE I1, ON FAIT SUIVRE LES PERMUTATIONS DANS I2
   6 : C
   7 : C     NUMERICAL RECIPES, HEAP SORT
   8 : C
   9 : C----------------------------------------------------
  10 : C
  11 : C     PP /9/97
  12 : C     Pierre Pegon/JRC Ispra
  13 : C
  14 : C     28/7/2005 : P. Maugis,
  15 : C                 boucle infinie si N=1 corrigé par test si N > 1
  16 : C
  17 : C      8/8/2008 : P. Pegon
  18 : C                 petit probleme de dimension de I1 ds un test!
  19 : C----------------------------------------------------
  20 :       IMPLICIT INTEGER(I-N)
  21 :       DIMENSION I1(N),I2(N)
  22 : C
  23 : *     On classe s'il y a quelque chose à classer
  24 :       IF (N.GT.1) THEN
  25 :         L   = (N/2)+1
  26 :         IR  = N
  27 : C
  28 :    1    CONTINUE
  29 :           IF (L.GT.1) THEN
  30 :             L      = L-1
  31 :             II1    = I1(L)
  32 :             II2    = I2(L)
  33 :           ELSE
  34 :             II1    = I1(IR)
  35 :             II2    = I2(IR)
  36 :             I1(IR) = I1(1)
  37 :             I2(IR) = I2(1)
  38 :             IR     = IR-1
  39 :             IF (IR.EQ.1) THEN
  40 :               I1(1) = II1
  41 :               I2(1) = II2
  42 :               RETURN
  43 :             ENDIF
  44 :           ENDIF
  45 : C
  46 :           I = L
  47 :           J = L*2
  48 : 
  49 :    2      CONTINUE
  50 :             IF (J.GT.IR) GOTO 3
  51 : C PPO       IF (J.LT.IR .AND. I1(J).LT.I1(J+1)) J=J+1
  52 :             IF(J.LT.IR)THEN
  53 :               IF(I1(J).LT.I1(J+1))J=J+1
  54 :             ENDIF
  55 :             IF (II1.LT.I1(J)) THEN
  56 :               I1(I) = I1(J)
  57 :               I2(I) = I2(J)
  58 :               I     = J
  59 :               J     = 2*J
  60 :             ELSE
  61 :               J     = IR+1
  62 :             ENDIF
  63 :           GOTO 2
  64 :    3      CONTINUE
  65 :           I1(I) = II1
  66 :           I2(I) = II2
  67 : C
  68 :         GOTO 1
  69 : C
  70 :       ENDIF
  71 : 
  72 :       END
  73 : 
  74 : 
  75 : 
  76 :  

© Cast3M 2003 - All rights reserved.
Disclaimer