Télécharger triflo.eso

Retour à la liste

Numérotation des lignes :

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

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