Download trient.eso

Back to the list

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

© Cast3M 2003 - All rights reserved.
Disclaimer