Sub QSort(t() As Long, Deb As Long, Fin As Long)
'TRI QUICKSORT RECURSSIF (TRI RAPIDE)
'Déclaration des variables
Dim i As Long 'indice
Dim j As Long 'indice
Dim X As Long 'valeur pivot
Dim Temp As Long 'Valeur temporaire
'Algo Tri
i = Deb 'sauve le début
j = Fin 'sauve la fin
X = t((i + j) \ 2) 'valeur pivot
Do
Do While t(i) < X: i = i + 1: Loop 'recherche par la bas
Do While t(j) > X: j = j - 1: Loop 'recherche par le haut
If i <= j Then
Temp = t(i) 'inversion t(i) et t(j)
t(i) = t(j)
t(j) = Temp
i = i + 1 'Passe au suivant
j = j - 1
End If
Loop Until i > j
If j > Deb Then QSort t(), Deb, j 'trie par le bas
If i < Fin Then QSort t(), i, Fin 'trie par le haut
End Sub
Sub Test_Tri()
'PROGRAMME DE TEST
'Nb D'ELEMENTS
Dim Nb As Long
Nb = 10000
'Déclarations
ReDim Tableau(Nb) As Long
Dim t As Long
Dim temps As Single
'LISTE ALEATOIRE
Randomize Timer
For t = 0 To Nb
Tableau(t) = Int(Rnd * Nb)
Next t
'LANCE TEST
temps = Timer
QSort Tableau(), 0, UBound(Tableau)
Debug.Print Timer - temps
End
'Vérification du tri
For t = 0 To Nb
If t Mod 10 = 0 Then Debug.Print
Debug.Print Tableau(t);
Next t
End Sub