VB.Net: Trier des tableaux et des matrices
VB.Net: Trier des tableaux et des matrices
- 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é, Lorsque 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
- 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.
- Par exemple, pour trier <123,132,42,91,66,13>, on va avoir les boucles suivantes:
- 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 :
-
Exercice
- Écrire un programme GestionTableau qui va appeler les méthodes suivantes.
- Déclarez un tableau tableau de type int de 10 entiers
- Écrivez une méthode Remplirtableau qui remplit le tableau avec des entiers entre 1 et 100 au hasard.
- Écrivez une méthode AffichageTab qui vous permet d’afficher le contenu du tableau.
- Écrivez une méthode tabMini qui renvoie son plus petit élément.
- Écrivez une méthode tabMax qui renvoie son plus grand élément.
- Écrivez une méthode TriTab qui vous permet de trier(tri à bulles) dont l’ordre croissant et d’afficher votre tableau.
- Écrivez une méthode tabSomme qui prend le type int comme valeur de retour et qui renvoie la somme des éléments du tableau.
- Afficher la moyenne des éléments du tableau.
-
Exercice
- Écrire un programme qui demande à l’utilisateur de saisir 10 entiers qui seront stockés dans un tableau
- Le programme doit afficher le contenu du tableau.
- Le programme demande à l’utilisateur de saisir un entier n.
- Le programme doit afficher l’entier.
- 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.
-
Exercice
- Écrire un programme qui demande à l’utilisateur de taper 10 entiers qui seront stockés dans un tableau.
- Le programme doit afficher le contenu du tableau.
- Le programme doit trier le tableau par ordre croissant et doit afficher le contenu du tableau.
- Le programme doit trier le tableau par ordre décroissant et doit afficher le contenu du tableau.
Exemple
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>
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
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
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
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