tmcuh
Messages postés458Date d'inscriptiondimanche 22 décembre 2002StatutMembreDernière intervention18 avril 2009
-
21 févr. 2003 à 22:54
cs_rene38
Messages postés1858Date d'inscriptionsamedi 29 juin 2002StatutMembreDernière intervention17 octobre 2013
-
23 févr. 2003 à 12:45
voilà j'ai un fichier à trié sur 2 colonnes à la fois la premières étant par nombre croissant jusque là cà va (je fais cà par Shell-Metzner : nickel chrome) et la 2ième sert uniquement en cas de conflit entre 2 chiffres exemple 2X le n°34 à ce moment là je trie sur l'autre qui sera le temps de "passage" en gros lequel à était mis le premier. Et donc il est logique que celui qui a était tapé le premier arrive en premier.
Cà je c'est le faire mais du fait que mon prog doit géré près de 5000 cases (500*10) il faut faire de l'optimisation et je perd mon temps à faire ce tri sur le "l'heure de passage", y'a t-il un autre moyen que de faire par la méthode de tri à bulle (par metzner c'est impossible!!! c'est clair).
Merci d'avance en espérant que vous avez compris ce que je veux.
cs_rene38
Messages postés1858Date d'inscriptionsamedi 29 juin 2002StatutMembreDernière intervention17 octobre 201311 23 févr. 2003 à 12:45
' Impossible ? Pas français !
' TRI de Enregistrement() sur 1èreclé > et 2èmeclé <
' Algorithme Shell-Metzner optimisé
k = 1
While k <= NbreDeLignesàTrier
k = k * 2
Wend
Do
k = (k - 1) \ 2
If k = 0 Then Exit Do ' tri terminé
For L = 1 To NbreDeLignesàTrier - k
i = L
Do
J = i + k
If 1èreclé (i) < 1èreclé (J) Then Exit Do
If 1èreclé (i) = 1èreclé (J) And 2èmeclé(i) > 2èmeclé(J) Then Exit Do Provi Enregistrement(i): Enregistrement(i) Enregistrement(J): Enregistrement(J) = Provi
i = i - k
Loop While i > 0
Next L
Loop