Télécharger trient.eso

Retour à la liste

Numérotation des lignes :

trient
  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.  
  71.  

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