begin process at 2010 02 10 09:30:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

le tri rapide


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

le tri rapide

dimanche 5 février 2006 à 15:46:15 | le tri rapide

hassni55

merci pour tous les personnes qui m'ont aidez, mais je revien aujourd'hui avec un autre probléme :
   j'ai un tableau statique  TAB(0 to 5) as Integer
      je vaudrais trier ce tableau en ordre croissant, mais en utilisant le Tri rapide.
merciiiiiiiii

dimanche 5 février 2006 à 15:58:51 | Re : le tri rapide

jack

Administrateur CodeS-SourceS
Salut
Il existe plusieurs méthodes de tri.
Il suffit de lire quelques sources que tu trouveras en tapant "méthode tri" puis la recherche par Google.
A toi de faire des essais et de tester la meilleure méthode, mais franchement, avec 6 éléments dans ton tableau, ce n'est pas la peine de te casser la tête à vouloir gagner de la vitesse.
D'autre part, évite sous VB d'utiliser des mots clés du langage pour désigner des variables : TAB n'est pas conseillé (iTab serait bien)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
dimanche 5 février 2006 à 17:44:51 | Re : le tri rapide

hassni55

j'ai des algorihmes  de tri rapide mais pour le transformer en visual basic ce me derange un peu. pour cela je demande d'aide, pas c koi le tri rapide ou comment ca marche mais comme j'entrain de te dire le prblm est en vb
merci pour votre compréhension .

dimanche 5 février 2006 à 22:17:31 | Re : le tri rapide

econs

Administrateur CodeS-SourceS
Voilà un exemple de tri. (Tri bulle)




Dim iTab(0 To 5) As Integer
Dim Index_Max_du_Tableau As Long
Dim iTemp As Integer
Dim l, j, k As Long

    iTab(0) = 15
    iTab(1) = 54
    iTab(2) = 64
    iTab(3) = 12
    iTab(4) = 87
    iTab(5) = 77

    Index_Max_du_Tableau = 5

    For l = 0 To Index_Max_du_Tableau - 1
        For k = Index_Max_du_Tableau - l To 1 Step -1
            If iTab(k - 1) > iTab(k) Then
                iTemp = iTab(k)
                iTab(k) = iTab(k - 1)
                iTab(k - 1) = iTemp
            End If
        Next k
    Next l




Manu



dimanche 5 février 2006 à 22:19:16 | Re : le tri rapide

econs

Administrateur CodeS-SourceS
Je l'ai réécrit, parce que je me suis rendu compte qu'un L minuscule et le chiffre 1, ç se ressemble beaucoup en police Courier. Donc là, plus possible de les confondre :




Dim iTab(0 To 5) As Integer
Dim Index_Max_du_Tableau As Long
Dim iTemp As Integer
Dim ll, k As Long

    iTab(0) = 15
    iTab(1) = 54
    iTab(2) = 64
    iTab(3) = 12
    iTab(4) = 87
    iTab(5) = 77

    Index_Max_du_Tableau = 5

    For ll = 0 To Index_Max_du_Tableau - 1
        For k = Index_Max_du_Tableau - ll To 1 Step -1
            If iTab(k - 1) > iTab(k) Then
                iTemp = iTab(k)
                iTab(k) = iTab(k - 1)
                iTab(k - 1) = iTemp
            End If
        Next k
    Next ll



Manu



dimanche 5 février 2006 à 23:48:42 | Re : le tri rapide

Gobillot

Voilà un exemple de tri rapide




' le paramètre Debut correspond au numéro du premier élément à trier
' le paramètre Fin correspond au numéro du dernier élément à trier
' le paramètre Tableau() est le tableau à trier
Sub TriRapide(Debut As Long, Fin As Long, Tableau As Variant)
    Dim i As Long
    Dim J As Long
    Dim Ligne_Milieu As Variant
    Dim Ligne_Tampon As Variant
   
    i = Debut
    J = Fin
    Ligne_Milieu = Tableau((Debut + Fin) \ 2)
    Do
        While Ligne_Milieu > Tableau(i)
           i = i + 1
           Wend
        While Ligne_Milieu < Tableau(J)
           J = J - 1
           Wend
          
        If i <= J Then
           Ligne_Tampon = Tableau(i)
           Tableau(i) = Tableau(J)
           Tableau(J) = Ligne_Tampon
           i = i + 1
           J = J - 1
           End If
        Loop Until i > J
   
    If Debut < J Then
       TriRapide Debut, J, Tableau
       End If
    If i < Fin Then
       TriRapide i, Fin, Tableau
       End If
     
End Sub

Daniel
lundi 6 février 2006 à 15:45:35 | Re : le tri rapide

hassni55

merci, pour votre aide, mais encore le probléme est de remplacer a procédure Tri rapide par autres instructions (j'aime pas l'utiliser sous forme d'une procédure ) parceque j'ai pas encore attaqué les fonctions et les procédures, j'ai essayé avec ces instructions :

Private sub Command1_Click( )
   ' partionner le tableau selon un pivot
   
pivot = t(0)
   PosPivot = 0
      for i = lbound(t)+1 to Ubound(t) 
               if t(i) < pivot then
                        PosPivot = PosPivot +1
                        tmp = t(i)
                        t(PosPivot) = tmp
              end if
      Next i
' Placer le pivot a sa place finale
tmp = t(PosPivot)
t(PosPivot) = Pivot
t(0) = tmp
 
' trier les 2 sous tableaux crées
içi le probléme la pluspart des prog utilisant des procédures comme suit :
   TriRapide D,i-2,t
  
SVP est ce que quelqun peut me dire ce qu'il faut écrire dans cette dérniere partie.
Merci

lundi 6 février 2006 à 17:30:07 | Re : le tri rapide

Gobillot

pour le récurssif il faut obligatoirement une procédure.
celui ci est un peu moins rapide que le QuickSort, mais il n'est pas récursif et tu peux l'utiliser où tu veux.
il suffit d'avoir défini Nb_Element, et le Tableau() qui n'est obligé d'être variant.


Sub Tri_Shell_Metzner(ByVal Nb_Element As Long, Tableau As Variant)
    Dim Ecart As Long
    Dim I As Long
    Dim J As Long
    Dim Permut As Boolean
    Dim Ligne_Tampon As Variant

    Ecart = Nb_Element \ 2
    Do While Ecart <> 0
       For I = 1 To Nb_Element - Ecart
           J = I
           Permut = True
           Do While J > 0 And Permut
              Permut = False
              If Tableau(J) > Tableau(J + Ecart) Then
                  Ligne_Tampon = Tableau(J)
                  Tableau(J) = Tableau(J + Ecart)
                  Tableau(J + Ecart) = Ligne_Tampon
                  Permut = True
                  J = J - Ecart
                  End If
              Loop
           Next I
        Ecart = Ecart \ 2
    Loop
End Sub

Daniel
mercredi 30 juillet 2008 à 05:36:55 | Re : le tri rapide

samsoum0408



tres bien
bravo
felicitation


Cette discussion est classée dans : tableau, tri, rapide


Répondre à ce message

Sujets en rapport avec ce message

Tri dans un tableau? [ par Georges ] Voilà mon problème: J'ai un tableau à 1 dimension assez grand (+ de 3000 éléments) contenant des valeurs numériques. Je voudrais pouvoir sortir le tri de tableau à 2 dimensions [ par ElMagnifico ] Bonjour!Voila j'ai un tableau dynamique de type String à deux dimensions et j'aimerais le trier dans l'ordre alphabétique de la première colonne (0).. tri dans un tableau [ par sash ] Salut à tous.Voilà mon problème : j'ai un sstab avec 4 onglets. Dans 3 des onglets,j'ai un datagrid relié un contrôle adodc relié à une bdd access.Dan tri d'un tableau avec type [ par mat6 ] je cherche à trier un tableau de type T comprenant 2 attributs A1(Byte) et A2(Integer).Le tri doit s'effectuer par ordre décroissant des valeurs de A2 tri d'onglet excel et recopiage dans un tableau [ par vbdebut ] Bonjour à tous,J'aimerais avoir votre aide sur un point précis.Je voudrais savoir comment on peut concevoir une macro dans Excel qui trie les onglets Tri tableau Excell avec VB [ par jeromepol49 ] Comment utiliser la fonction de tri alphabétique "a z" d'Excell à partir de VB? Tri par ordre alphabétique d'un tableau [ par sankukai ] Bonjour à tous,Soit un tableau tout bete declare comme suit :Dim tableau() as StringJe le rempli avec des valeurs, et je voudrais ensuite trier les v tri de tableau interne sous Excel [ par pthirard ] Excel permet de trier rapidement un tableau dans une feuille.Si on a un tableau interne déclaré dans une macro excel (écrite en VB), comment faire pou tri sur quatre colonnesavec lien entre elles [ par kyo.ced ] bonjour, je vous explique, je débute en VBA. Je souhaiterai tri un tableau. Dans ce tableau, il y a quatre colonne et un nombre infini de lignes. Une tri tableau [ par damd ] salutj'aimerai savoir comment trier un tableau.en fait, est-ce qu'il existe une fonction ou bien il faut creer un algo ?s'il y a une fonction, j'aimer


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales