begin process at 2008 07 06 18:43:46
1 205 717 membres
280 nouveaux aujourd'hui
14 119 membres club

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 : 5 882

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   
  • 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

Pub



Appels d'offres

WEB DESIGN
Budget : 1 000€
Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

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

Boutique

Boutique de goodies CodeS-SourceS