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
