tridep
C TRIDEP SOURCE JC220346 18/12/04 21:16:29 9991 IMPLICIT INTEGER(I-N) -INC CCNOYAU CHARACTER*(*) KA(N),KB(N) CHARACTER*(LONOM) IAX C C EN ENTREE : KA TABLEAU A TRIER C N SA DIMENSION C KB TABLEAU DE TRAVAIL C C EN SORTIE :KA TABLEAU TRIE EN ORDRE CROISSANT C IF(N.EQ.1) RETURN C C ON FAIT UNE PREMIERE BOUCLE POUR LES ORDONNES 2 A 2 .CECI PERMET C DESAUVER 3*N/2 TESTS. C NC=N/2 DO 4 I=1,NC J=2*I-1 J1=J+1 IF(KA(J).LT.KA(J1)) GO TO 4 IAX=KA(J1) KA(J1)=KA(J) KA(J)=IAX 4 CONTINUE IF(N.EQ.2) RETURN C C ON CONTINUE A LES ORDONNNES NI PAR NI C IF(NE.GT.ND) NC=NC+1 NF2=0 INC=0 DO 2 I=1,N 2 KB(I)=KA(I) C C BOUCLE SUR LES NC COUPLES DE ND VALEURS C DO 30 JJ=1,NC N1=NF2+1 N2=N1+ND NF1=NF2+ND NF2=NF1+ND NF2=MIN(NF2,N) 13 INC=INC+1 IF(KB(N1).GT.KB(N2)) GO TO 14 KA(INC)=KB(N1) IF(N1.GE.NF1) GO TO 17 N1=N1+1 GO TO 13 14 KA(INC)=KB(N2) IF(N2.GE.NF2) GO TO 18 N2=N2+1 GO TO 13 17 DO 20 I=N2,NF2 20 KA(I)=KB(I) INC=NF2 GO TO 30 18 DO 21 I=N1,NF1 INC=INC+1 21 KA(INC)=KB(I) 30 CONTINUE GO TO 1 END
© Cast3M 2003 - Tous droits réservés.
Mentions légales