1. Trier un tableau à une dimension (Array.Sort)
La classe Array fournit une méthode statique Sort() extrêmement efficace pour trier les éléments d'un tableau unidimensionnel. Par défaut, le tri se fait par ordre croissant (alphabétique ou numérique).
Exemple de tri :
Module Module1
Sub Main()
Dim gouter() As String = {"pain", "beurre", "moutarde"}
' Tri du tableau par ordre alphabétique
Array. Sort(gouter)
For Each x In gouter
Console.WriteLine(x)
Next
Console.ReadKey()
End Sub
End Module
Sub Main()
Dim gouter() As String = {"pain", "beurre", "moutarde"}
' Tri du tableau par ordre alphabétique
Array. Sort(gouter)
For Each x In gouter
Console.WriteLine(x)
Next
Console.ReadKey()
End Sub
End Module
Résultat d'exécution :
beurre
moutarde
pain
moutarde
pain
Astuce : Pour inverser l'ordre (tri décroissant), utilisez d'abord
Array.Sort() puis la méthode Array.Reverse()! 2. Trier une matrice (Tableau à 2 dimensions)
Contrairement aux tableaux 1D, il n'existe pas de fonction native directe pour trier une matrice 2D en VB.Net (car il faudrait décider si on trie par ligne ou par colonne). L'astuce consiste à convertir la matrice en tableau de tableaux (Jagged Array) ou à écrire une fonction de tri personnalisée.
' Tri personnalisé basé sur le tri à bulles (Bubble Sort)
Sub Trier2DArray(ByRef myTable(,) As String, ByVal triColumn As Integer)
Dim i, j As Integer
Dim swap As Boolean
Dim temp As String
Dim uBound0 As Integer = myTable.GetUpperBound(0)
Dim uBound1 As Integer = myTable.GetUpperBound(1)
Do
swap = False
For i = 0 To uBound0 - 1
' Comparaison alphabétique de la colonne spécifiée
If String. Compare(myTable(i, triColumn), myTable(i + 1, triColumn)) > 0 Then
For j = 0 To uBound1
temp = myTable(i, j)
myTable(i, j) = myTable(i + 1, j)
myTable(i + 1, j) = temp
Next
swap = True
End If
Next
Loop While swap
End Sub
Sub Trier2DArray(ByRef myTable(,) As String, ByVal triColumn As Integer)
Dim i, j As Integer
Dim swap As Boolean
Dim temp As String
Dim uBound0 As Integer = myTable.GetUpperBound(0)
Dim uBound1 As Integer = myTable.GetUpperBound(1)
Do
swap = False
For i = 0 To uBound0 - 1
' Comparaison alphabétique de la colonne spécifiée
If String. Compare(myTable(i, triColumn), myTable(i + 1, triColumn)) > 0 Then
For j = 0 To uBound1
temp = myTable(i, j)
myTable(i, j) = myTable(i + 1, j)
myTable(i + 1, j) = temp
Next
swap = True
End If
Next
Loop While swap
End Sub
Cette fonction permute les lignes complètes de la matrice en se basant sur le tri d'une colonne spécifique (triColumn).