Download tridep.eso

Back to the list

   1 : C TRIDEP    SOURCE    CHAT      05/01/13    03:46:49     5004           
   2 :       SUBROUTINE TRIDEP(KA,KB,N)                                                
   3 :       IMPLICIT INTEGER(I-N)
   4 :       CHARACTER*(*) KA(N),KB(N)                                                 
   5 :       CHARACTER*8 IAX                                                           
   6 : C                                                                               
   7 : C  EN ENTREE : KA TABLEAU A TRIER                                               
   8 : C              N  SA DIMENSION                                                  
   9 : C              KB TABLEAU DE TRAVAIL                                            
  10 : C                                                                               
  11 : C  EN SORTIE :KA TABLEAU TRIE EN ORDRE CROISSANT                                
  12 : C                                                                               
  13 :       IF(N.EQ.1) RETURN                                                         
  14 : C                                                                               
  15 : C   ON FAIT UNE PREMIERE BOUCLE POUR LES ORDONNES 2 A 2 .CECI PERMET            
  16 : C   DESAUVER 3*N/2 TESTS.                                                       
  17 : C                                                                               
  18 :       NC=N/2                                                                    
  19 :       DO 4 I=1,NC                                                               
  20 :       J=2*I-1                                                                   
  21 :       J1=J+1                                                                    
  22 :       IF(KA(J).LT.KA(J1)) GO TO 4                                               
  23 :       IAX=KA(J1)                                                                
  24 :       KA(J1)=KA(J)                                                              
  25 :       KA(J)=IAX                                                                 
  26 :    4  CONTINUE                                                                  
  27 :       IF(N.EQ.2) RETURN                                                         
  28 : C                                                                               
  29 : C  ON CONTINUE A LES ORDONNNES NI PAR NI                                        
  30 : C                                                                               
  31 :       NI=2                                                                      
  32 :     1 ND=NI                                                                     
  33 :       NI=NI*2                                                                   
  34 :       NC=N/NI                                                                   
  35 :       NE=MOD(N,NI)                                                              
  36 :       IF(NE.GT.ND) NC=NC+1                                                      
  37 :       NF2=0                                                                     
  38 :       INC=0                                                                     
  39 :       DO 2 I=1,N                                                                
  40 :    2  KB(I)=KA(I)                                                               
  41 : C                                                                               
  42 : C  BOUCLE SUR LES NC COUPLES DE ND VALEURS                                      
  43 : C                                                                               
  44 :       DO 30 JJ=1,NC                                                             
  45 :       N1=NF2+1                                                                  
  46 :       N2=N1+ND                                                                  
  47 :       NF1=NF2+ND                                                                
  48 :       NF2=NF1+ND                                                                
  49 :       NF2=MIN(NF2,N)                                                            
  50 :  13   INC=INC+1                                                                 
  51 :       IF(KB(N1).GT.KB(N2)) GO TO 14                                             
  52 :       KA(INC)=KB(N1)                                                            
  53 :       IF(N1.GE.NF1) GO TO 17                                                    
  54 :       N1=N1+1                                                                   
  55 :       GO TO 13                                                                  
  56 :   14  KA(INC)=KB(N2)                                                            
  57 :       IF(N2.GE.NF2) GO TO 18                                                    
  58 :       N2=N2+1                                                                   
  59 :       GO TO 13                                                                  
  60 :   17  DO 20 I=N2,NF2                                                            
  61 :   20  KA(I)=KB(I)                                                               
  62 :       INC=NF2                                                                   
  63 :       GO TO 30                                                                  
  64 :   18  DO 21 I=N1,NF1                                                            
  65 :       INC=INC+1                                                                 
  66 :   21  KA(INC)=KB(I)                                                             
  67 :   30  CONTINUE                                                                  
  68 :       IF(NI.GE.N) RETURN                                                        
  69 :       GO TO 1                                                                   
  70 :       END                                                                       
  71 :  

© Cast3M 2003 - All rights reserved.
Disclaimer