Specialiste du tri de tableaux

tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009 - 21 févr. 2003 à 22:54
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 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.

1 réponse

cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
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
0
Rejoignez-nous