Download ordo12.eso

Back to the list

   1 : C ORDO12    SOURCE    CHAT      05/01/13    02:05:52     5004           
   2 :       SUBROUTINE ORDO12 (MLIST,LLIST,CROISS)                                    
   3 : ************************************************************************        
   4 : *                                                                               
   5 : *                             O R D O 1 2                                       
   6 : *                             -----------                                       
   7 : *                                                                               
   8 : * FONCTION:                                                                     
   9 : * ---------                                                                     
  10 : *                                                                               
  11 : *     ORDONNER LE CONTENU D'UN TABLEAU UNICOLONNE D'ENTIERS EN NE TENANT        
  12 : *     COMPTE QUE DES VALEURS ABSOLUES.                                          
  13 : *                                                                               
  14 : * MODE D'APPEL:                                                                 
  15 : * -------------                                                                 
  16 : *                                                                               
  16 : *     CALL ORDO12 (MLIST,LLIST,CROISS)                                          
  17 : *                                                                               
  18 : * PARAMETRES:   (E)=ENTREE   (S)=SORTIE                                         
  19 : * -----------                                                                   
  20 : *                                                                               
  21 : *     MLIST   ENTIER    (E)  TABLEAU UNICOLONNE A REORDONNER.                   
  22 : *                       (S)  MEME TABLEAU, AVEC LES ELEMENTS REORDONNES.        
  23 : *     LLIST   ENTIER    (E)  DIMENSION DE "MLIST".                              
  24 : *     CROISS  LOGIQUE   (E)  INDIQUE PAR "VRAI" OU "FAUX" SI LE TABLEAU         
  25 : *                            DOIT ETRE REORDONNE EN ORDRE CROISSANT.            
  26 : *                            SINON, CE SERA FAIT EN ORDRE DECROISSANT.          
  27 : *                                                                               
  28 : * AUTEUR, DATE DE CREATION:                                                     
  29 : * -------------------------                                                     
  30 : *                                                                               
  31 : *     PASCAL MANIGOT     23 AVRIL 1985                                          
  32 : *                                                                               
  33 : *     NOUVEL ALGORITHME PLUS PERFORMANT LE 14 MAI 1985 (P. MANIGOT)             
  34 : *                                                                               
  35 : * LANGAGE:                                                                      
  36 : * --------                                                                      
  37 : *                                                                               
  38 : *     FORTRAN77                                                                 
  39 : *                                                                               
  40 : ************************************************************************        
  41 : *                                                                               
  42 :       IMPLICIT INTEGER(I-N)
  43 :       INTEGER MLIST(*)                                                          
  44 : *                                                                               
  45 :       LOGICAL CROISS,DECROI                                                     
  46 : *                                                                               
  47 :       DECROI = .NOT.CROISS                                                      
  48 : *                                                                               
  49 :       DO 100 IB100=2,LLIST                                                      
  50 : *                                                                               
  51 :          ML100 = MLIST(IB100)                                                   
  52 :          ML100A = ABS(ML100)                                                    
  53 :          IB101 = IB100 - 1                                                      
  54 : *                                                                               
  55 :          NRANG = IB100                                                          
  56 :          DO 110 IB110=IB101,1,-1                                                
  57 :             ML110A = ABS(MLIST(IB110))                                          
  58 :             IF ( (CROISS .AND. ML100A.LT.ML110A)                                
  59 :      &      .OR. (DECROI .AND. ML100A.GT.ML110A) ) THEN                         
  60 :                NRANG = NRANG - 1                                                
  61 :             ELSE                                                                
  62 : *              --> SORTIE DE BOUCLE N.110                                       
  63 :                GOTO 112                                                         
  64 :             END IF                                                              
  65 :   110       CONTINUE                                                            
  66 : *        END DO                                                                 
  67 :   112    CONTINUE                                                               
  68 : *                                                                               
  69 :          DO 120 IB120=IB101,NRANG,-1                                            
  70 :             MLIST(IB120+1) = MLIST(IB120)                                       
  71 :   120       CONTINUE                                                            
  72 : *        END DO                                                                 
  73 :          MLIST(NRANG) = ML100                                                   
  74 : *                                                                               
  75 :   100    CONTINUE                                                               
  76 : *     END DO                                                                    
  77 : *                                                                               
  78 :       END                                                                       
  79 :  

© Cast3M 2003 - All rights reserved.
Disclaimer