Premier article d'une série de cinq présentant différentes méthodes de tri. Nous expliquons ici la méthode dite du "tri à bulle". Toutes ces procédures seront téléchargeables avec l'interface de comparaison (article 5).
Programmation > Visual Basic
Recherche :   
Actualité Système Salon Concours Outils Programmation Devparadise Programmation HTML .Net JavaScript VBScript ASP PHP Visual Basic Perl Java Active X SQL XML WAP Delphi Graphisme Flash Web Design Promotion Référencement Publicité Valeur de votre site Outils Systèmes Windows Unix Linux Benchmark Hardware Réseaux locaux Droit Sécurité
Tri à bulle
  Auteur : Eric PETIT

Premier article d'une série de cinq présentant différentes méthodes de tri. Nous expliquons ici la méthode dite du "tri à bulle". Toutes ces procédures seront téléchargeables avec l'interface de comparaison (article 5).

Publicité 
   Premier article d'une série de cinq présentant différentes méthodes de tri. Nous expliquons ici la méthode dite du "tri à bulle". Toutes ces procédures seront téléchargeables avec l'interface de comparaison (article 5).

En effet il existe de nombreuses méthodes de tri, nous en étudierons cinq:

Ces méthodes sont plus ou moins intéressantes suivant le nombre d'éléments à trier. La méthode de Shell Metzner est un bon compromis, elle est moins rapide que le Quick Sort mais moins gourmande en ressources.

Le tri à bulle :

Les explications sont données pour le tri croissant.

   Le principe comme son nom l'indique est de placer en haut du tableau les éléments les plus lourds.
   Pour cela, on compare chaque élément N à celui qui lui est supérieur (dans le classement) N + 1, si cet élément N est plus importante que l'élément N +1 alors on intervertit les deux éléments.
   Pour être sûr que le premier élément (qui peut être le plus lourd) puisse atteindre le haut du tableau, il faut recommencer autant de fois qu'il y a d'éléments.
   Il y aura donc environ (Nombre d'éléments au carré) comparaisons à faire et dans le pire des cas autant d'inversions.

Source:

Sub Tri_A_Bulles(ByVal Nb_Element As Long, Tableau() As Variant, ByVal Sens As Boolean)

    ' le paramètre Nb_Element correspond au nombre d'éléments du tableau, sa valeur n'est donc pas modifiée
    ' le paramètre Tableau() est le tableau à trier, il est modifié puis retourné
    ' le paramètre Sens est vrai pour un tri croissant

    Dim I As Long
    Dim J As Long
    ' I et J sont des variables intermédiaires utilisées pour les compteurs de boucles
    Dim Ligne_Tampon As Variant
    ' Ligne_Tampon est une variable intermédiaire utilisée pour la permutation d'éléments

    ' On effectue l'opération autant de fois qu'il y a d'éléments
    For I = 1 To Nb_Element - 1

      ' Chaque élément est comparé à celui qui lui est supérieur dans le classement
      For J = 1 To Nb_Element - I
        If (Tableau(J) > Tableau(J + 1) And Sens) Or (Tableau(J) < Tableau(J + 1) And Not Sens) Then

          ' l'élément J est plus important que l'élément J + 1 alors on les intervertit
          Ligne_Tampon = Tableau(J)
          Tableau(J) = Tableau(J + 1)
          Tableau(J + 1) = Ligne_Tampon
        End If
      Next J
    Next I
End Sub

A lire aussi sur Devparadise.com :
  • Contrôleur d'attributs
  • Bien maîtriser son référencement
  • Positionnement d’un DIV.
  • Création d’un diagramme circulaire en PERL.
  • Création d’un histogramme 3D en PERL pour Windows.
  • A télécharger aussi sur Devparadise.com :
  • Téléchargez gratuitement ASP.NET Web Matrix
  • Contrôleur d'attributs
  • Contrôleur d'attributs (Source VB)
  • Profiler.cgi 2.01
  • Firefly 1.0.2

  • © 1997-2009 tous droits réservés Devparadise.com
    Les logos, et marques déposées sont la propriété de leurs détenteurs respectifs.
    Devparadise.com s'est engagé à respecter la confidentialité des données personnelles régies par la loi 78-17 du 6 janvier 1978.
    Déclaration C.N.I.L. n° 621623
    tri,bulle