C ORDO11    SOURCE    CHAT      05/01/13    02:05:49     5004
      SUBROUTINE ORDO11 (XLIST,LLIST,CROISS)
************************************************************************
*
*                             O R D O 1 1
*                             -----------
*
* FONCTION:
* ---------
*
*     ORDONNER LE CONTENU D'UN TABLEAU UNICOLONNE DE REELS EN NE TENANT
*     COMPTE QUE DES VALEURS ABSOLUES.
*
* MODE D'APPEL:
* -------------
*
*     CALL ORDO11 (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.
*
* 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)
      REAL*8 XLIST(*)
      REAL*8 XL100,XL100A,XL110A
*
      LOGICAL CROISS,DECROI
*
      DECROI = .NOT.CROISS
*
      DO 100 IB100=2,LLIST
*
         XL100 = XLIST(IB100)
         XL100A = ABS(XL100)
         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)
  120       CONTINUE
*        END DO
         XLIST(NRANG) = XL100
*
  100    CONTINUE
*     END DO
*
      END

