- Public Sub TriParSelection(tabLong() As Long)
- Dim lgFor As Long
- Dim lgMem As Long, lgTiers As Long
- Dim lgTmp As Long
- lgTiers = LBound(tabLong)
- Do
- lgTiers = 3 * lgTiers + 1
- Loop Until lgTiers > UBound(tabLong)
- Do
- lgTiers = lgTiers / 3
- For lgFor = lgTiers + LBound(tabLong) To UBound(tabLong)
- ' Enregistrement de la valeur de l'élément "courant"
- lgTmp = tabLong(lgFor)
- lgMem = lgFor
- Do While tabLong(lgMem - lgTiers) > lgTmp
- ' Ecrase la valeur de l'élément "courant" (ou de comparaison, à partir du second tour)
- tabLong(lgMem) = tabLong(lgMem - lgTiers)
- ' Recherche la position d'un nouvel élément de "comparaison"
- lgMem = lgMem - lgTiers
- ' Evite de sortir des limites du tableau
- If lgMem < lgTiers Then Exit Do
- Loop
- ' Enregistre la valeur de l'élément courant à la place de
- ' l'élément de comparaison si l'échange a effectivement eu lieu.
- ' Sinon, cela n'a aucun effet, enregistrement de l'élément courant
- ' sur lui-même
- tabLong(lgMem) = lgTmp
- Next lgFor
- Loop Until lgTiers = LBound(tabLong)
- End Sub
Public Sub TriParSelection(tabLong() As Long)
Dim lgFor As Long
Dim lgMem As Long, lgTiers As Long
Dim lgTmp As Long
lgTiers = LBound(tabLong)
Do
lgTiers = 3 * lgTiers + 1
Loop Until lgTiers > UBound(tabLong)
Do
lgTiers = lgTiers / 3
For lgFor = lgTiers + LBound(tabLong) To UBound(tabLong)
' Enregistrement de la valeur de l'élément "courant"
lgTmp = tabLong(lgFor)
lgMem = lgFor
Do While tabLong(lgMem - lgTiers) > lgTmp
' Ecrase la valeur de l'élément "courant" (ou de comparaison, à partir du second tour)
tabLong(lgMem) = tabLong(lgMem - lgTiers)
' Recherche la position d'un nouvel élément de "comparaison"
lgMem = lgMem - lgTiers
' Evite de sortir des limites du tableau
If lgMem < lgTiers Then Exit Do
Loop
' Enregistre la valeur de l'élément courant à la place de
' l'élément de comparaison si l'échange a effectivement eu lieu.
' Sinon, cela n'a aucun effet, enregistrement de l'élément courant
' sur lui-même
tabLong(lgMem) = lgTmp
Next lgFor
Loop Until lgTiers = LBound(tabLong)
End Sub