Tri d'un tableau de valeur dans l'ordre croissant

Soyez le premier à donner votre avis sur cette source.

Snippet vu 37 471 fois - Téléchargée 27 fois

Contenu du snippet

Petit bout de code sans aucune prétention, pour que le site possède des algorithmes types, au milieu des exemples. Ce petit bout de code pourra servir si vous cherchez un moyen rapide et efficace pour trier un tableau de valeur. Si vous utilisez un autre langage que le VB, l'algorithme est utilisable dans BEAUCOUP de language.
Plus communément appellé le tri a bulle.....

Petit problème connu : C'est vous qui me l'apprendrai =)

Source / Exemple :


Dim i, j, tmp, tmpMin, tmpMax, tableau(10)
Dim invert as Boolean

'Considérons que le tableau est plein de valeurs aléatoires....

tmpMin = 1
tmpMax = 0
invert = True

While invert = True
     For i=0 to 10
          If tableau(i)>tableau(i+1)
               tmpMax = tableau(i)
               tableau(i) = tableau(i+1)
               invert = True
          Else
               invert = False
          End If

          If tableau(i)<tableau(i+1)
               tmpMin = tableau(i+1)
               tableau(i+1) = tableau(i)
               invert = True
          Else
               invert = False
          End If

     Next
Wend

Conclusion :


IMPORTANT : Je connais bien cette alogorithme. Le seul problème, c'est que je l'ai tapée directement ici, sans la tester. Ce n'est pas pour autant qu'elle est fausse, je suis quasi-sur qu'elle fonctionne. Si quelqu'un la teste, merci de me dire si cela fonctionne bien, et si il y a un moyen pour l'optimiser.

A bientot Ben.

A voir également

Ajouter un commentaire

Commentaires

manroww
Messages postés
1
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
5 mai 2011
-
Bonjour,

Si J'ai bien compris ta volonte de Benbax, tu voulais presenter a la fois la possibilite de tri croissant, et celle pour un tri decroissant ?
J'ai ecrit le code en consequence, inspire du tiens.
Il suffit de uncomment le tri decroissant, et comment le tri croissant pour inverser l'ordre :-)

Sub tri()

Dim i As Byte
Dim j As Byte

Dim tmp As Byte
Dim tmpMin As Byte
Dim tmpMax As Byte

Dim tableau(10) As Byte

Dim invert As Boolean


' ***** POUR L'EXEMPLE **************************************
'Considérons que le tableau est plein de valeurs aléatoires....

tableau(1) = 5
tableau(2) = 3
tableau(3) = 46
tableau(4) = 7
tableau(5) = 2
' **************************************************************



Do

invert = False

For i = 1 To 4


' ******** Ordre CROISSANT ***********
If tableau(i) > tableau(i + 1) Then

tmpMax = tableau(i)
tableau(i) = tableau(i + 1)
tableau(i + 1) = tmpMax
invert = True

End If
' *************************************



'' ******** Ordre DECROISSANT *********
'
' If tableau(i) < tableau(i + 1) Then
'
' tmpMin = tableau(i + 1)
' tableau(i + 1) = tableau(i)
' tableau(i) = tmpMin
' invert = True
'
' End If
'
'' *************************************

Next i

Loop While invert



'***** POUR L'EXEMPLE *********

For i = 1 To 5

Debug.Print tableau(i)

Next i

'*******************************


End Sub
cs_benbax
Messages postés
9
Date d'inscription
lundi 12 mai 2003
Statut
Membre
Dernière intervention
14 décembre 2004
-
C'est bien vu =)

Désolé, pour les eventuels problèmes posé...
Je n'ai pas le temps de modifer, alors remerciement a psycho =)
cs_psycho
Messages postés
232
Date d'inscription
samedi 11 mai 2002
Statut
Membre
Dernière intervention
27 octobre 2007
-
salut, je pense pas que tu puisses trier ton tableau avec cet algo. Je crois qu il manque une ligne en fait : tu fais
tmpmax=tableau(i)
tableau(i)=tableau(i+1)
mais tu ne fais pas tableau(i+1)=tmpmax
donc, le tri n est pas fais, tu affectes juste le maximum a tous les éléments du tableau

dis moi si je me trompe.
allez @+

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.