[COLOR=blue]Option Base[/COLOR] 1
[COLOR=blue]Function[/COLOR] TriPermutation(MaString [COLOR=blue]As String[/COLOR]) [COLOR=blue]As String[/COLOR]
[COLOR=blue]Dim[/COLOR] I [COLOR=blue]As Integer[/COLOR], Tablo()
[COLOR=blue]If[/COLOR] MaString = "" [COLOR=blue]Then Exit Function[/COLOR]
[COLOR=blue]For[/COLOR] I = 1 [COLOR=blue]To[/COLOR] Len(MaString)
[COLOR=blue]ReDim Preserve[/COLOR] Tablo(I)
Tablo(I) = Mid(MaString, I, 1)
[COLOR=blue]Next[/COLOR] I
[COLOR=blue]Call[/COLOR] tri(Tablo, [COLOR=blue]LBound[/COLOR](Tablo), [COLOR=blue]UBound[/COLOR](Tablo))
[COLOR=blue]For[/COLOR] I = 1 [COLOR=blue]To[/COLOR] Len(MaString)
TriPermutation = TriPermutation & Tablo(I)
[COLOR=blue]Next[/COLOR] I
[COLOR=blue]End Function[/COLOR]
[COLOR=blue]Sub[/COLOR] tri(a, gauc, droi) [COLOR=green]' Quick sort de JB[/COLOR]
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
[COLOR=blue]Do[/COLOR]
[COLOR=blue]Do While[/COLOR] a(g) < ref: g = g + 1: [COLOR=blue]Loop[/COLOR]
[COLOR=blue]Do While[/COLOR] ref < a(d): d = d - 1: [COLOR=blue]Loop[/COLOR]
[COLOR=blue]If[/COLOR] g <= d [COLOR=blue]Then[/COLOR]
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
[COLOR=blue]End If[/COLOR]
[COLOR=blue]Loop While[/COLOR] g <= d
[COLOR=blue]If[/COLOR] g < droi [COLOR=blue]Then Call[/COLOR] tri(a, g, droi)
[COLOR=blue]If[/COLOR] gauc < d [COLOR=blue]Then Call[/COLOR] tri(a, gauc, d)
[COLOR=blue]End Sub[/COLOR]