Trier un tableau à plusieurs colonne

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Trier un tableau à plusieurs colonne

Message par Le Soldat Inconnu »

ce code permet de trier un tableau avec plusieurs colonne avec l'ordre des colonnes de vote choix pour faire le trie

par exemple : trier sur la colonne 2 puis la 1 puis la 3

Code : Tout sélectionner

Dim MonTableau.s(10, 2) ; attention à l'ordre colonne ligne, moi je fais comme ça
Dim tableau_trie.s(10)

; ici je rempli le tableau avec une boucle

MonTableau.s(0, 0) = "bcd"
MonTableau.s(0, 1) = "b"
MonTableau.s(0, 2) = "oups"
MonTableau.s(1, 0) = "bdc"
MonTableau.s(1, 1) = "a"
MonTableau.s(1, 2) = "haha"
MonTableau.s(2, 0) = "bcd"
MonTableau.s(2, 1) = "b"
MonTableau.s(2, 2) = "hoho"

; tous d'abord, on assemble les 3 colonnes de la liste en insérant un caractère de séparation qui n'est pas utilisé dans le texte £ par exemple
; l'ordre d'assemblage dépend de l'ordre de trie souhaité, ici je fais dans l'ordre suivant par exemple : 1,0,2
For n = 0 To 10
  tableau_trie(n) = MonTableau(n, 1) + "£" + MonTableau(n, 0) + "£" + MonTableau(n, 2)
Next

; on trie la liste
SortArray(tableau_trie(), 2)

; on recopie les données triées dans MonTableau()
For n = 0 To 10
  MonTableau(n, 0) = StringField(tableau_trie(n), 2, "£")
  MonTableau(n, 1) = StringField(tableau_trie(n), 1, "£")
  MonTableau(n, 2) = StringField(tableau_trie(n), 3, "£")
  Debug MonTableau(n, 0) + " " + MonTableau(n, 1) + " " + MonTableau(n, 2)
Next
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]