Télécharger tridep.eso

Retour à la liste

Numérotation des lignes :

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

© Cast3M 2003 - Tous droits réservés.
Mentions légales