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