Tri à bulle sans prétention

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 561 fois - Téléchargée 41 fois

Contenu du snippet

ce bout de code m'a servi à classer par ordre alphabétique le contenu d'un tableau, le classement s'effectuant sur les deux premières lettre du contenu de la (i,2).
Ex : le passant après la ds le tableau final.
je lis la ligne, la compare à la suivante, si la comparaison révèle qu'elle doit être classée après alphabetiquement, alors je remplace la ligne par celle-ci. et ainsi de suite...
je me sers du code ascii, des lettres pour comparer, le A ayant un code ascii inférieur au B ds la table ascii.
le tableau possède 'compt' lignes et 8 colonnes.
la variable ordre stocke la colonne du tableau sur laquelle va s'effectuer le tri
Ex : (i,1) --> l'identifiant
(i,2) --> le titre
(i,3)--> le nom

Source / Exemple :


Public Function lance_tri(ordre)

Dim vala, valb, valc, vald
dim i, j, k
dim tempv()
redim tempv(1,8)

 For i = 1 To compt
  For k = i To compt
   If Asc(Left(table_bd(i, ordre), 1)) > Asc(Left(table_bd(k, ordre), 1)) Then
    For j = 1 To 8
     tempv(1, j) = table_bd(i, j)
    Next
    For j = 1 To 8
     table_bd(i, j) = table_bd(k, j)
    Next
    For j = 1 To 8
     table_bd(k, j) = tempv(1, j)
    Next
   ElseIf Asc(Left(table_bd(i, ordre), 1)) = Asc(Left(table_bd(k, ordre), 1)) And Asc(Mid(table_bd(i, ordre), 2, 1)) > Asc(Mid(table_bd(k, ordre), 2, 1)) Then
    For j = 1 To 8
     tempv(1, j) = table_bd(i, j)
    Next
    For j = 1 To 8
     table_bd(i, j) = table_bd(k, j)
    Next
    For j = 1 To 8
     table_bd(k, j) = tempv(1, j)
    Next
   End If
  Next
 Next

end function

A voir également

Ajouter un commentaire Commentaires
Messages postés
9
Date d'inscription
mardi 8 janvier 2002
Statut
Membre
Dernière intervention
10 avril 2006

merci.
c 'est vrai. on peut imaginer que lorsque deux valeurs sont identiques (i,1) et (i+1,1) je fais le tri sur la colonne qui suit, etc... mais le propos était un petit tris à bulle, pas une usine à gaz! ;-)
Messages postés
72
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
20 juin 2003

Pas mal !
Mais ton code pourrait être généralisé afin de ne plus se contenter des deux premières lettres pour le tri, et de prendre en compte les données contenues par autres colonnes (au cas où la première contiendrait des données identiques)...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.