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
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.