Tri triage

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 883 fois - Téléchargée 38 fois

Contenu du snippet

Cette source classique tri des données numériques ou alphanumériques mais teste si le tableau est de une ou deux dimensions.
Notez-bien
Tddref est le tableau a 1 ou plusieurs dimension surtout ne mettez pas de parenthéses

debut c'est le début du tableau
fin est la fin du tableau a trié

Source / Exemple :


Public Sub Tri_Rapide(Byval Sens As String, TDDRef, Byval Quelle_Dimension,Byval Debut,Byval Fin)
Static i As Integer, J As Integer, W As Variant, ls As Integer, ndd As Integer

' sens As String est une variable de sens de tri sens 2 trie de A-Z et 1 trie de Z-A ou des nombres
'boolean
On Error Resume Next
ndd = 0
For test = 1 To 2
If UBound(TDDRef, test) > 0 Then ndd = test
If Err.Number = 9 Then
On Error GoTo 0
ndd = test - 1
Exit For
End If
Next

If Sens = "2" Or Sens = ">" Then ls = 1 Else ls = -1

If ndd = 1 Then
   
    For i = Debut To Fin - 1
        pointeur = True
        
        For J = 1 To Fin - i
            If (TDDRef(J + 1) * ls) >= (TDDRef(J) * ls) Then
        Else
            W = TDDRef(J + 1)
            TDDRef(J + 1) = TDDRef(J)
            TDDRef(J) = W
          pointeur = False
          End If
            
 Next J
        
        If pointeur = True Then Exit For
       
        
     Next i

ElseIf ndd = 2 Then
    
   If Quelle_Dimension = 2 Then
    For i = Debut To Fin - 1
    pointeur = True
        For J = Debut To Fin - i
            If (TDDRef(J + 1, 2) * ls) > (TDDRef(J, 2) * ls) Then
            Else
            W = TDDRef(J + 1, 2)
            TDDRef(J + 1, 2) = TDDRef(J, 2)
            TDDRef(J, 2) = W
            W = TDDRef(J + 1, 1)
            TDDRef(J + 1, 1) = TDDRef(J, 1)
            TDDRef(J, 1) = W
            
            
            pointeur = False
            End If
            
        Next
        If pointeur = True Then Exit For
        
    Next
    
    
Else
     For i = Debut To Fin - 1
    pointeur = True
        For J = Debut To Fin - i
            If (TDDRef(J + 1, 1) * ls) > (TDDRef(J, 1) * ls) Then
            Else
            W = TDDRef(J + 1, 1)
            TDDRef(J + 1, 1) = TDDRef(J, 1)
            TDDRef(J, 1) = W
            W = TDDRef(J + 1, 2)
            TDDRef(J + 1, 2) = TDDRef(J, 2)
            TDDRef(J, 2) = W
            
            
            pointeur = False
            End If
            
        Next
        If pointeur = True Then Exit For
        
    Next

    
    End If

    
    
    End If
End Sub

Conclusion :


Pas de bugs connus. Cette source fonctionne parfaitement.

IL Y AVAIT PLUSIEURS BUGS DESOLE !

A voir également

Ajouter un commentaire

Commentaire

Messages postés
26
Date d'inscription
mercredi 12 février 2003
Statut
Membre
Dernière intervention
14 mars 2005

1°) Multiplier de l'alphanumérique par un nombre, ça plante !!!

2°) Dans le cas ou dimension est > 1 le tableau ne correspond plus à rien.
Il faut échanger toutes les valeurs de chaque index.
du genre
for i=1 to dimension
w = tddlocal(i, x)
tddlocal(i, x) = tddlocal(i, y)
tddlocal(i, y) = w
next i

3°) Ce genre de tri à bulle n'est pas très performant quand on a de grosses quantités à trier.

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.