ordo13
C ORDO13 SOURCE JC220346 14/12/16 21:15:09 8324 ************************************************************************ * * O R D O 1 3 * ----------- * * FONCTION: * --------- * * ORDONNER LE CONTENU D'UN TABLEAU UNICOLONNE DE REELS EN NE TENANT * COMPTE QUE DES VALEURS ABSOLUES ET RETOURNER UNE LISTE CONTENANT * LE NOUVEL ORDRE DES ELEMENTS * * MODE D'APPEL: * ------------- * * CALL ORDO13 (XLIST,LLIST,CROISS) * * PARAMETRES: (E)=ENTREE (S)=SORTIE * ----------- * * XLIST REEL DP (E) TABLEAU UNICOLONNE A REORDONNER. * (S) MEME TABLEAU, AVEC LES ELEMENTS REORDONNES. * LLIST ENTIER (E) DIMENSION DE "XLIST". * CROISS LOGIQUE (E) INDIQUE PAR "VRAI" OU "FAUX" SI LE TABLEAU * DOIT ETRE REORDONNE EN ORDRE CROISSANT. * SINON, CE SERA FAIT EN ORDRE DECROISSANT. * IORDR (E) TABLEAU D'ENTIERS ALLANT DE 1 A AU MOINS * LLIST. * (S) MEME TABLEAU, CONTENANT LE NOUVEL ORDRE * DES ELEMENTS DE XLIST. * * AUTEUR, DATE DE CREATION: * ------------------------- * * JCARDO 10 DEC 2014 * * LANGAGE: * -------- * * FORTRAN77 * ************************************************************************ * IMPLICIT INTEGER(I-N) REAL*8 XLIST(*) INTEGER IORDR(*) REAL*8 XL100,XL100A,XL110A * LOGICAL CROISS,DECROI * DECROI = .NOT.CROISS * DO 100 IB100=2,LLIST * XL100 = XLIST(IB100) XL100A = ABS(XL100) IO100 = IORDR(IB100) IB101 = IB100 - 1 * NRANG = IB100 DO 110 IB110=IB101,1,-1 XL110A = ABS(XLIST(IB110)) IF ( (CROISS .AND. XL100A.LT.XL110A) & .OR. (DECROI .AND. XL100A.GT.XL110A) ) THEN NRANG = NRANG - 1 ELSE * --> SORTIE DE BOUCLE N.110 GOTO 112 END IF 110 CONTINUE * END DO 112 CONTINUE * DO 120 IB120=IB101,NRANG,-1 XLIST(IB120+1) = XLIST(IB120) IORDR(IB120+1) = IORDR(IB120) 120 CONTINUE * END DO XLIST(NRANG) = XL100 IORDR(NRANG) = IO100 * 100 CONTINUE * END DO * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales