Tris de tableaux a plusieurs dimensions
Publié : sam. 29/mai/2010 10:35
Salut a tous.
Pour des besoins perso, j'ai eu besoin de trier une liste indexée. cela revient a
avoir un tableau a plusieurs dimensions.
On trie sur une colonne (Celle que l'on veut) et le reste suit. pour moi le tableau était a 8 colonnes.
ce tri est une sorte de quicksort, mais sans récursivité, ni de goto.
Bien entendu les chiffres peuvent être remplacés par du texte.
Il est trés rapide, a vous de chronométré!
Qu'en pensez vous?
Pour des besoins perso, j'ai eu besoin de trier une liste indexée. cela revient a
avoir un tableau a plusieurs dimensions.
On trie sur une colonne (Celle que l'on veut) et le reste suit. pour moi le tableau était a 8 colonnes.
ce tri est une sorte de quicksort, mais sans récursivité, ni de goto.
Bien entendu les chiffres peuvent être remplacés par du texte.
Il est trés rapide, a vous de chronométré!
Qu'en pensez vous?
Code : Tout sélectionner
Global maxtab = 5000
Dim tabpos(5000,5000)
For x=1 To 5000
tabpos(x,2) = x
Next
For x=1 To 1500
tabpos(x,1) = x +15
Next
For x=1501 To 3000
tabpos(x,1) = x +22
Next
For x=3001 To 5000
tabpos(x,1) = x +11
Next
I = maxtab / 2
While I > 0
t = maxtab - I
Repeat
p = 0
For n = 1 To t
tr1.l = tabpos(n,1)
tr2.l = tabpos((n +I) ,1)
If tr1.l < tr2.l ; pour trier dans l'autre sens faite >
swp1.l = tabpos(n, 1)
tabpos(n, 1) = tabpos((n) + I, 1)
tabpos((n) + I, 1) = swp1.l
swp2.l = tabpos(n, 2); pour ajouté une colonne ajoutez ce code en remplaçant les 2 par des 3
tabpos(n, 2) = tabpos((n) + I, 2);*************
tabpos((n) + I, 2) = swp2.l; fin pour une colonne sup
p = n
EndIf
Next
t = p - I
Until p = 0
I = I / 2
Wend
For y =1 To maxtab
Debug Str(tabpos(y,2)) + " " + Str(tabpos(y,1))
Next