Algorithme de tri (le tri à bulle)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 41 036 fois - Téléchargée 46 fois

Contenu du snippet

ceci est un exemple de tri de tableaux par permutations. On dis quand on est poli le tri à bulle !!

Source / Exemple :


Option Explicit
'algorithme de tri a bulle
'Le tri à bulle est une méthode de tri qui consiste à
'comparer successivement tous les éléments adjacents
'd'un tableau et à les échanger si le premier élément
'est supérieur au second.
'On recommence cette opération tant que tous
'les éléments ne sont pas triés.
'-------------------------------Ce texte explicatif n'est pas de moi
'CF ---> http://www-ipst.u-strasbg.fr/ipst/deug-ti/aide-c/tris/tribulle.htm#bulle
'----------------------------------------------------
'LE code est de moi...
'----------------------------------------------------

Private Sub Form_Load()
    Dim tableau(9) As Variant
    tableau(0) = 9
    tableau(1) = 5
    tableau(2) = 1
    tableau(3) = 6
    tableau(4) = 2
    tableau(5) = 3
    tableau(6) = 4
    tableau(7) = 10
    tableau(8) = 7
    tableau(9) = 8
    '--------------------------
    Dim i, intTmp, x As Integer
    For i = 0 To UBound(tableau)
        Text1(0).Text = Text1(0).Text & tableau(i) & vbCrLf
    Next i
    Dim TriFini, PasFini As Boolean
    TriFini = False
    '--------------------
    Do While TriFini = False 'faire tant que le tri n'est pas fini
        For i = 0 To UBound(tableau) - 1
            If tableau(i) > tableau(i + 1) Then
                '------------------permutation
                intTmp = tableau(i)
                tableau(i) = tableau(i + 1)
                tableau(i + 1) = intTmp
                '------------------
                PasFini = True
                'si on ne repasse plus ici
                'PasFini sera = à False (cf plus bas)
            End If
        Next i
        If PasFini = False Then
            TriFini = True
            Exit Do '-------------------------fin ici
        Else
            'indice des champs textes
            x = x + 1
            For i = 0 To UBound(tableau)
                Text1(x).Text = Text1(x).Text & tableau(i) & vbCrLf
            Next i
        End If
        'On réinitialise la valeur PasFini
        PasFini = False
    Loop
End Sub

Conclusion :


à venir les autres méthodes (plus compliqué !!:)

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
dimanche 26 avril 2009
Statut
Membre
Dernière intervention
26 avril 2009

je déconseille la méthode d'inversion avec seulement deux variables, cela peut poser problème avec les arrondis dans le cas où le tableau contient des valeurs décimales.

Cordialement.
Messages postés
367
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010

J'aime bien ton expression VicoLaChips2 :
"C'est pas trop dichotomique ... Mais ça reste académique."
:)

Bon critiquage maintenant :
1) Y'a TROP de gras !
2) Pk DEUX valeur booleenne ? TriFini = not PasFini
3) Pk intTmp ? Quand je veux inverser deux valeurs je le fais comme ça :

Soit a et b à inverser :
a = a + b
b = a - b
a = a - b

Par contre je ne sais pas ce qui ce passe si (a+b) dépasse le type des variables a et b. Mais ca n'arrive que très rarement.

Bon et sinon t'étais pas obligé d'afficher les résultats ...
Perso j'aime bien connaitre le squelette conceptuel d'un algo (le strict minimum quoi !). Là je suis obligé de l'extraire pour vérifier qu'il est bon !
Enfin bon ...
Messages postés
1
Date d'inscription
jeudi 15 mai 2003
Statut
Membre
Dernière intervention
20 mai 2003

merci ! j'avais la flemme de me le taper à la main !!
Messages postés
436
Date d'inscription
dimanche 20 janvier 2002
Statut
Membre
Dernière intervention
2 février 2010
2
Je suis d'accord :), mais je n'avais pas vue d'exemple sur vbfrance.com alors... !
C'est pas trop dichotomique !!, mais ça reste académique. @+
Messages postés
3
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
12 mars 2002

Bof c connu le tri a bulle et en plus c pas super rapide si tu prend des tableau de grande taille ... Pour ce que cela interresse il existe une dizaine d'algorithme de tri et le plus performant est le Quicksort on obtient un temps de tri 10 fois moindre que le tri a bulle je mettrai bientot le source :)

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.