Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PLUS RAPIDE QUE LE TRI À BULLE, LE TRI PAR SELECTION


Information sur la source

Catégorie :Divers Classé sous : tri, sélection Niveau : Initié Date de création : 17/05/2001 Vu : 7 038

Note :
6,67 / 10 - par 3 personnes
6,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

Description

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

  • 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   

Commentaires et avis

signaler à un administrateur
Commentaire de soleildz le 15/11/2003 14:42:06


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?          

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

tri d'une sélection d'une liste [ par harzer ] Bonjour à tous.J'ai une liste multi sélection dans laquelle j'ai plusieurs lignes.ce que je souhaite faire, c'est après avoir sélectionné une partie d ** TRI D'INFORMATION????** [ par Heny ] Salut a tousJ'utilise ce code pour faire une sélection a deux choix c.a.d je fait un tri par « Mode de payement » et par « versement », si le cheque tri d'une Listview sur plusieur colonne [ par ludovicanceaux ] Salut à tous, en fait j'aurai voulu savoir komment ou kel serai le moyen le plus aproprié pour trié Une Listview ex:J'ai une Listview de 4 lignes et tri d'une Listview sur plusieur colonne [ par ludovicanceaux ] Salut à tous, en fait j'aurai voulu savoir komment ou kel serai le moyen le plus aproprié pour trié Une Listview ex:J'ai une Listview de 4 lignes et Problème de tri dans un etat qui répère une requete [ par rolo ] Votre texte ICIBonjour,Mon problème est le suivant: Je génère une requête SQL en VBA puis j'affiche les résultat trié selon les choix de l'utilisateur Sélection de ligne dans un datagrid [ par drizzt40 ] Bonjour, J'ai un probleme avec la propriété row des datagrid : le numéro de la ligne en cours (datagrid.row) n'augmente pas quand on clique SetFocus Sélection des boutons [ par valer ] salut!voila je suis un peu dans l'urgence car je fini mon stage ce soir!bref voila le pb.Je douche un codes et le met dans une textbox. Je sais génére datagrid tri mémorisation [ par drastik74 ] Bonjour a vous, j'aurais voulu savoir si quelqu'un savait comment faire pour mémoriser le tri d'un datagrid. Je voudrais en fait que lorsque je rouvre [VBA/EXCEL] Tri d'un combobox? [ par ShadowWisp ] Est-ce que quelqu'un connait une méthode *simple* pour trier un combobox dans excel/vba?La propriété de la combobox sorted n'éxistant pas...Merci d'av Tri dans un listview [ par chris81 ] bonjour,comment fait on pour trier des nombres dans un listview en vb.net.mercihttp://www.tarnweb.comhttp://www.correzeweb.com


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,530 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.