ordo12
C ORDO12 SOURCE CHAT 05/01/13 02:05:52 5004 ************************************************************************ * * O R D O 1 2 * ----------- * * FONCTION: * --------- * * ORDONNER LE CONTENU D'UN TABLEAU UNICOLONNE D'ENTIERS EN NE TENANT * COMPTE QUE DES VALEURS ABSOLUES. * * MODE D'APPEL: * ------------- * * CALL ORDO12 (MLIST,LLIST,CROISS) * * PARAMETRES: (E)=ENTREE (S)=SORTIE * ----------- * * MLIST ENTIER (E) TABLEAU UNICOLONNE A REORDONNER. * (S) MEME TABLEAU, AVEC LES ELEMENTS REORDONNES. * LLIST ENTIER (E) DIMENSION DE "MLIST". * CROISS LOGIQUE (E) INDIQUE PAR "VRAI" OU "FAUX" SI LE TABLEAU * DOIT ETRE REORDONNE EN ORDRE CROISSANT. * SINON, CE SERA FAIT EN ORDRE DECROISSANT. * * AUTEUR, DATE DE CREATION: * ------------------------- * * PASCAL MANIGOT 23 AVRIL 1985 * * NOUVEL ALGORITHME PLUS PERFORMANT LE 14 MAI 1985 (P. MANIGOT) * * LANGAGE: * -------- * * FORTRAN77 * ************************************************************************ * IMPLICIT INTEGER(I-N) INTEGER MLIST(*) * LOGICAL CROISS,DECROI * DECROI = .NOT.CROISS * DO 100 IB100=2,LLIST * ML100 = MLIST(IB100) ML100A = ABS(ML100) IB101 = IB100 - 1 * NRANG = IB100 DO 110 IB110=IB101,1,-1 ML110A = ABS(MLIST(IB110)) IF ( (CROISS .AND. ML100A.LT.ML110A) & .OR. (DECROI .AND. ML100A.GT.ML110A) ) 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 MLIST(IB120+1) = MLIST(IB120) 120 CONTINUE * END DO MLIST(NRANG) = ML100 * 100 CONTINUE * END DO * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales