VB.Net: Trier des tableaux et des matrices

 

VB.Net: Trier des tableaux et des matrices





  1. Définition d’un algorithme de Tri
    • Les tableaux permettent de stocker plusieurs éléments de même type au sein d’une seule entité, LorsqueVB.Net: Trier des tableaux et des matrices le type de ces éléments possède un ordre total, on peut donc les ranger en ordre croissant ou décroissant,
    • Trier un tableau c’est donc ranger les éléments d’un tableau en ordre croissant ou décroissant Dans ce cours on ne fera que des tris en ordre croissant Il existe plusieurs méthodes de tri qui se différencient par leur complexité d’exécution et leur complexité de compréhension pour le programmeur, nous examinons ce tutoriel le tri à bulles (Bubble Sort)
    • Tous les algorithmes de tri utilisent une procédure qui permet d’échanger(de permuter)la valeur de deux variables

  2. Tri à bulles (Bubble Sort)
    • Principe de la méthode: Sélectionner le minimum du tableau en parcourant le tableau de la fin au début et en échangeant tout couple d’éléments consécutifs non ordonnés.
    • Exemple

      • Par exemple, pour trier <123,132,42,91,66,13>, on va avoir les boucles suivantes:
      • i=1: i=2: i=3: i=4: i=5:
        <123,132,42,91,66,13>
        <123,132,42,91,13,66>
        <123,132,42,13,91,66>
        <123,132,13,42,91,66>
        <123,13,132,42,91,66>
        <13,123,132,42,91,66> <42,123,132,66,91> <66,132,115,91> <91,123,132>

        Donc en sortie: <13,42,66,91,123,132>

    • Le tri à bulle, mieux connu sous le nom de «Bubble Sort» est habituellement utilisé à des fins d’apprentissage. L’idée derrière cette technique est très simple, parcourir le tableau et permuter deux éléments lorsque cela s’avère nécessaire. Vous trouverez la réponse que vous souhaitez, à l’aide du code source VB.Net suivant :
    • Module Module1
      
          Sub Main()
              Dim MaxTableau As Integer = 8
              Dim K, L, I, J, t As Integer
              Dim Tableau() As Integer = {10, 23, 2, 8, 9, 14, 16, 12}
              Console.Write("Avant:")
              K = 0
              For K = 0 To MaxTableau - 1
                  If K = (MaxTableau - 1) Then
                      Console.Write(Convert.ToString(Tableau(K)))
                  Else
                      Console.Write(Convert.ToString(Tableau(K)) + ", ")
                  End If
              Next
              For I = MaxTableau - 2 To 0 Step -1
                      For J = 0 To I
                      If Tableau(J + 1) < Tableau(J) Then
                          t = Tableau(J + 1)
                          Tableau(J + 1) = Tableau(J)
                          Tableau(J) = t
                      End If
                  Next
                  Next
      
      
                  Console.WriteLine()
              Console.Write("Après:")
              L = 0
              For L = 0 To MaxTableau - 1
                  If L = 0 Then
                      Console.Write(Convert.ToString(Tableau(L)))
                  Else
                      Console.Write(", " + (Convert.ToString(Tableau(L))))
                  End If
      
              Next
      
              Console.WriteLine()
              Console.ReadKey()
          End Sub
      
      End Module
      
      

    Exercices d’application

    1. Exercice
      1. Écrire un programme GestionTableau qui va appeler les méthodes suivantes.
      2. Déclarez un tableau tableau de type int de 10 entiers
      3. Écrivez une méthode Remplirtableau qui remplit le tableau avec des entiers entre 1 et 100 au hasard.
      4. Écrivez une méthode AffichageTab qui vous permet d’afficher le contenu du tableau.
      5. Écrivez une méthode tabMini qui renvoie son plus petit élément.
      6. Écrivez une méthode tabMax qui renvoie son plus grand élément.
      7. Écrivez une méthode TriTab qui vous permet de trier(tri à bulles) dont l’ordre croissant et d’afficher votre tableau.
      8. Écrivez une méthode tabSomme qui prend le type int comme valeur de retour et qui renvoie la somme des éléments du tableau.
      9. Afficher la moyenne des éléments du tableau.
      10. Correction

          Module Module1
              Public tableau As Integer() = New Integer(9) {}
              Sub Main()
                  remplirTableau()
                  AffichageTab()
                  tabMini()
                  tabMax()
                  TriTab()
                  Console.WriteLine("La somme est: " & tabSomme() & " ")
                  Console.WriteLine("La moyenne est: " & (tabSomme() / tableau.Length))
              End Sub
              Private Sub remplirTableau()
                  Dim rnd As New Random()
                  ' affectation de valeurs entières, pris au hasard entre 1 et 100, au tableau
                  For i As Integer = 0 To 9
                      tableau(i) = rnd.Next(1, 101)
                  Next
              End Sub
              Private Sub AffichageTab()
                  'affichage des valeurs du tableau
                  For i As Integer = 0 To 9
                      Console.WriteLine(Convert.ToString(tableau(i)) & " ")
                  Next
              End Sub
              Private Sub tabMini()
                  Dim min As Integer = 101
                  'Recherche de minimum
                  For i As Integer = 0 To 9
                      If min > tableau(i) Then
                          min = tableau(i)
                      End If
                  Next
                  Console.WriteLine("Le minimum est: " & min & " ")
              End Sub
              Private Sub tabMax()
                  Dim max As Integer = 0
                  'Recherche de maxmimum
                  For i As Integer = 0 To 9
                      If max < tableau(i) Then
                          max = tableau(i)
                      End If
                  Next
                  Console.WriteLine("Le maximum est: " & max & " ")
              End Sub
              Private Sub TriTab()
                  Dim t As Integer
                  'Triage du tableau
                  For i As Integer = 0 To 8
                      For j As Integer = 0 To 10 - 2
          
                          If tableau(j) > tableau(j + 1) Then
                              t = tableau(j + 1)
                              tableau(j + 1) = tableau(j)
                              tableau(j) = t
          
                          End If
                      Next
                  Next
                  Console.WriteLine("Affichage du tableau trié")
                  For i As Integer = 0 To 9
                      Console.WriteLine(Convert.ToString(tableau(i)))
                  Next
              End Sub
              Private Function tabSomme() As Double
                  Dim somme As Integer = 0
                  For i As Integer = 0 To 9
                      somme += tableau(i)
                  Next
                  Return somme
              End Function
          End Module
          
    2. Exercice
      1. Écrire un programme qui demande à l’utilisateur de saisir 10 entiers qui seront stockés dans un tableau
      2. Le programme doit afficher le contenu du tableau.
      3. Le programme demande à l’utilisateur de saisir un entier n.
      4. Le programme doit afficher l’entier.
      5. Le programme doit rechercher si l’entier n se trouve dans le tableau et afficher “n se trouve dans le tableau” ou “n ne se trouve pas dans le tableau.
      Correction
        Module exercice2
            Public tab As Integer() = New Integer(9) {}
            Sub Main()
                exercice_2()
                trouveelement()
            End Sub
            Private Sub exercice_2()
                For i As Integer = 0 To 9
                    Console.WriteLine("Saisir lélémént {0}", i + 1)
                    'if(isNumeric(Console.ReadLine()))
                    '{
                    '}
        
                    tab(i) = Convert.ToInt32(Console.ReadLine())
                Next
                For i As Integer = 0 To 9
                    Console.WriteLine("L'élémént {0} est : {1}", i, tab(i))
                Next
            End Sub
            Private Sub trouveelement()
                Dim n As Integer
                Console.WriteLine("Saisir lélémént n ")
                n = Convert.ToInt32(Console.ReadLine())
                For i As Integer = 0 To 9
                    'Console.WriteLine("Saisir lélémént {0}" + tab[i]);
                    If n = tab(i) Then
                        Console.WriteLine("L'élémént {0} existe dans le tableau", n)
                        Exit For
                    Else
                        If i = 9 Then
                            Console.WriteLine("L'élémént {0} n'existe pas dans le tableau", n)
        
                        End If
        
                    End If
                Next
            End Sub
            Private Function isNumeric(valeur As String) As Boolean
                If String.IsNullOrEmpty(valeur) Then
                    Return False
                End If
                For Each ch As Char In valeur.ToCharArray()
                    If Char.IsLetter(ch) Then
                        Return False
                    End If
                Next
                Return True
            End Function
        
        
        End Module
        
        
    3. Exercice
      1. Écrire un programme qui demande à l’utilisateur de taper 10 entiers qui seront stockés dans un tableau.
      2. Le programme doit afficher le contenu du tableau.
      3. Le programme doit trier le tableau par ordre croissant et doit afficher le contenu du tableau.
      4. Le programme doit trier le tableau par ordre décroissant et doit afficher le contenu du tableau.
      Correction
        Module exercice3
            Public tab As Integer() = New Integer(9) {}
            Sub Main(args As String())
                exercice_3()
                TriTabCroissant()
                TriTabDecroissant()
            End Sub
            Private Sub exercice_3()
                For i As Integer = 0 To 9
                    Console.WriteLine("Saisir lélémént {0}", i + 1)
                    'if(isNumeric(Console.ReadLine()))
                    '{
                    '}
        
                    tab(i) = Convert.ToInt32(Console.ReadLine())
                Next
                For i As Integer = 0 To 9
                    Console.WriteLine("L'élémént {0} est : {1}", i, tab(i))
                Next
            End Sub
            Private Sub TriTabCroissant()
                Console.WriteLine("Triage du tableau dans l'ordre croissant")
                Dim t As Integer
                'Triage du tableau
                For i As Integer = 0 To 8
                    For j As Integer = 0 To 10 - 2
        
                        If tab(j) > tab(j + 1) Then
                            t = tab(j + 1)
                            tab(j + 1) = tab(j)
                            tab(j) = t
        
                        End If
                    Next
                Next
                For i As Integer = 0 To 9
                    Console.WriteLine(tab(i))
                Next
            End Sub
            Private Sub TriTabDecroissant()
                Console.WriteLine("Triage du tableau dans l'ordre décroissant")
                Dim t As Integer
                'Triage du tableau
                For i As Integer = 0 To 8
                    For j As Integer = 0 To 10 - 2
        
                        If tab(j) < tab(j + 1) Then
                            t = tab(j + 1)
                            tab(j + 1) = tab(j)
                            tab(j) = t
        
                        End If
                    Next
                Next
                For i As Integer = 0 To 9
                    Console.WriteLine(tab(i))
                Next
            End Sub
        
        
        End Module
        





    Abonnez vous à notre chaîne YouTube gratuitement