1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| Sub Tri(ByRef A As Variant, ByVal Gauche, ByVal Droite, ByVal ColTri As Integer) ' Quick sort
Dim G, D, Tmp, Ref
Dim i As Integer
Ref = A((Gauche + Droite) \ 2, ColTri)
G = Gauche
D = Droite
Do
Do While A(G, ColTri) < Ref
G = G + 1
Loop
Do While A(D, ColTri) > Ref
D = D - 1
Loop
If G <= D Then
For i = LBound(A, 2) To UBound(A, 2)
Tmp = A(G, i)
A(G, i) = A(D, i)
A(D, i) = Tmp
Next i
G = G + 1
D = D - 1
End If
Loop While G <= D
If G < Droite Then Call Tri(A, G, Droite, ColTri)
If D > Gauche Then Call Tri(A, Gauche, D, ColTri)
End Sub |
Partager