Plus rapide que le tri à bulle, le tri par selection

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 103 fois - Téléchargée 61 fois

Contenu du snippet

Voici un tri plus rapide que le tri à bulles. Etant piètre programmeur, je me suis contenté de recopié celui d'un site vb. Je suis sur qu'il peut vous servir......

Source / Exemple :


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

A voir également

Ajouter un commentaire

Commentaires

j'ai fait le test sur un tableau de 10000 fichiers en modifiant un peu le code,ben c'est plus rapide que le tri a bulle c vrai...je suis meme etonne
soleildz
Messages postés
58
Date d'inscription
dimanche 19 avril 2009
Statut
Membre
Dernière intervention
10 février 2016
-
voici le nbre de fois que a;b;c;.....(20 caracteres) sont present.
n0,n1,........n19 sont des entiers
a n0
b n1
c n2
d n3
e n4
.
.
.
. n19
comment ordonner selon n0......n19 rapidement?

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.