C ORDO02 SOURCE CHAT 05/01/13 02:05:45 5004 SUBROUTINE ORDO02 (MLIST,LLIST,CROISS) ************************************************************************ * * O R D O 0 2 * ----------- * * FONCTION: * --------- * * ORDONNER LE CONTENU D'UN TABLEAU UNICOLONNE D'ENTIERS. * * MODE D'APPEL: * ------------- * * CALL ORDO02 (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 19 MARS 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) IB101 = IB100 - 1 * NRANG = IB100 DO 110 IB110=IB101,1,-1 ML110 = MLIST(IB110) IF ( (CROISS .AND. ML100.LT.ML110) & .OR. (DECROI .AND. ML100.GT.ML110) ) 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