SlideShare une entreprise Scribd logo
1  sur  4
Télécharger pour lire hors ligne
Algorithmes de TRI                                                              Algorithmique & Programmation



I. Rappels
      1) Activité 1 (Tri à bulles)
   a) Principe
Le principe de cette méthode de tri consiste à balayer tout le tableau, comparer les éléments consécutifs
et les échanger s'ils ne sont pas dans le bon ordre.
Cette méthode peut se traduire par l’algorithme formel suivant :
Comparer la première paire des éléments,
1- Si T [ 1 ] > T [ 2 ]alors permuter T [ 1 ] et T [ 2 ] et tenir compte de cette action.
2- Aller à la paire suivante et répéter les étapes 1 et 2 jusqu’à comparer la dernière paire.
3- Si une permutation a été réalisée (ou plusieurs) alors répéter ce qu’on vient de faire, sinon le tableau
est trié.
   b) Algorithme
       0) DEF PROC Tri_bulles( var T :tab ; N : entier)
       1) Répéter
             echange  Faux
             Pour i de 1 à N - 1 Faire
                  Si T [ i ] > T [ i + 1 ] Alors
                                          aux  T [ i ]
                                          T[i]T[i+1]                         PROC Permut (T [ i ], T [ i+1] )
                                          T [ i + 1 ]  Aux
                                          echange  vrai
                  Fin Si
            Fin Pour
        Jusqu’à (echange = Faux)
      2) Fin Tri_bulles

2) Activité 2 (Tri par séléction)
      a) Principe
       Cette méthode peut se traduire par l’algorithme formel suivant :
1- Comparer tous les nombres afin de sélectionner le plus petit (ordre croissant),
2- Échanger le plus petit élément trouvé avec le premier élément,
3- Refaire les étapes 1 et 2 et rechercher le plus petit du tableau sauf le premier puis l’échanger avec le
   second.
       b) Algorithme
       0) DEF PROC Tri_sélection( var T :tab ; N : entier)
       1) Pour i de 1 à N - 1 Faire
                posmin  i
                Pour j de i+1 à N Faire                                      Recherche de la position du
                  Si T [ j ] < T [ posmin ] Alors posmin  j
                                                                             minimum « posmin »
                  Fin Si
                Fin Pour
                Si i < > posmin Alors
                                     aux  T [ i ]
                                     T [ i ]  T [posmin ]
                                     T [posmin ]  aux
                Fin Si
            Fin Pour
    2) Fin Tri_selection

   Enseignant: Mr SAYARI                                    Page 1 /4                                      4 S.INFO
Algorithmes de TRI                                                                 Algorithmique & Programmation


3) Activité 3 (Tri par insertion)
       a) Principe
   C’est une méthode de tri qui consiste à prendre les éléments du tableau un par un puis d’insérer chacun
  à sa bonne palace façon que les éléments traités forment une liste triée.
  Cette méthode peut se traduire par l’algorithme formel suivant :
      1- On commence par le deuxième élément,
      2- Comparer l’élément choisis avec tous ses précédents dans le tableau et l’insérer dans sa
          bonne place,
      3- Répéter l’étape 2 pour l’élément suivant jusqu’à arriver au dernier.
  b) Algorithme

     0) DEF PROC Tri_insertion ( var T :tab ; N : entier)
     1) Pour i de 2 à N              Faire
          ji
         aux  T [ i ]
           Tant que (j > 1) ET ( T [ j – 1] > aux ) Faire                    Décalage de tous les éléments
                   T[j]T[j–1]
                                                                             supérieurs à aux, «T [ i ]» dans la
                   jj–1
           Fin Tant que                                                      liste triée
           T [ j ]  Aux
        Fin Pour
    2) Fin Tri_insertion

      II. TRI SHELL
a) Principe
    - C’est une variante du tri par insertion
    - Shell propose une suite définie par : U1=1 et Un+1= 3 * Un +1 pour déterminer la valeur du pas.
    - Trie chaque liste d’éléments séparés par p positions chacun avec un tri par insertion.
b) Exemple

     T     72      61      44   80     70    85    21        23         51    87     74     94     20     17         56

c) Analyse de la procédure TRI_SHELL
   Résultat= T
   2) T= [ ] Tant que p>0 faire
             P  p div 3
             Pour i de p à n faire
                 Aux  T[i]
                 Ji
                 Tant que (j>p-1) et (T[j-p]>aux) Faire
                   T[j]  T[j-p]
                   J  j-p
                 Fin Tant que
                 T[j] aux
             Fin pour
             Fin Tant que
    1) P=[p0 ] Tant que p<n Faire
                     P  3*p+1
              Fin Tant que
   Enseignant: Mr SAYARI                                    Page 2 /4                                      4 S.INFO
Algorithmes de TRI                                                             Algorithmique & Programmation

d) Algorithme
   0) DEF PROC TRI_SHELL (var T : tab ; n : entier)
   1) P  0
       Tant que p<n Faire
          P  3*p+1
       Fin Tant que
   2) Tant que p>0 faire
       P  p div 3
       Pour i de p à n faire
          Aux  T[i]
          Ji
          Tant que (j>p-1) et (T[j-p]>aux) Faire
           T[j]  T[j-p]
           J  j-p
          Fin Tant que
          T[j] aux
       Fin pour
       Fin Tant que
   3) Fin TRI_SHELL

       III. Application : TRI PAR FUSION
               a) principe

   -   Le tri fusion est construit suivant la stratégie "diviser pour régner".
   -   Le principe de base de la stratégie "diviser pour régner" est que pour résoudre un gros problème, il est
       souvent plus facile de le diviser en petits problèmes élémentaires. Une fois chaque petit problème
       résolu, il n’y a plus qu’à combiner les différentes solutions pour résoudre le problème global.
   -   La méthode "diviser pour régner" est tout à fait applicable au problème de tri : plutôt que de trier le
       tableau complet, il est préférable de trier deux sous tableaux de taille égale, puis de fusionner les
       résultats.
   -   L’algorithme de tri par fusion à développer est récursif, En effet, les deux sous tableaux seront eux
       même triés à l’aide de l’algorithme de tri fusion. Un tableau ne comportant qu’un seul élément sera
       considéré comme trié.
   -   Etapes de l’algorithme :

                Division de l’ensemble de valeurs en deux parties
                Tri de chacun des deux ensembles
                Fusion des deux ensembles

          b) Analyse de la procédure Tri_fusion
   DEF PROC TRI_FUSION (var T : tab ; d,f : entier)

   Résultat= TRI_FUSION
   TRI_FUSION= [ ] SI (d<f) Alors
                     Mil (d+f) div 2
                     proc tri_fusion (t,d,mil)
                     proc tri_Fusion(t,mil+1,f)
                     proc fusionner(t,d,mil,f)
         Fin Si




  Enseignant: Mr SAYARI                                   Page 3 /4                                    4 S.INFO
Algorithmes de TRI                                                                     Algorithmique & Programmation

            c) Analyse de la procédure Fusionner

                DEF PROC FUSIONNER (var T :tab ; d,mil,f :entier)
                Résultat= T
                T= [ ] pour i de d à f faire
                         T[i]  V[i]
                         Fn pour
                V= [i d , j mil+1 ] pour k de d à f faire
                                             Si (i<=mil) et (t[i] < t[j]) ou (j>f) alors
                                                                                           V[k]  T[i]
                                                                                           i  i+1
                                           Sinon
                                               V[k]  T[j]
                                               j j+1
                                            Fin si
                                         Fin pour




Enseignant: Mr SAYARI                                         Page 4 /4                                      4 S.INFO

Contenu connexe

Tendances

Chap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-rechercheChap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-rechercheRiadh Harizi
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmationborhen boukthir
 
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdfExercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdfsalah fenni
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivitéSana Aroussi
 
Chapitre iv algorithmes de tri
Chapitre iv algorithmes de triChapitre iv algorithmes de tri
Chapitre iv algorithmes de triSana Aroussi
 
Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)salah fenni
 
Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018salah fenni
 
éNoncés+corrections bac2009
éNoncés+corrections bac2009éNoncés+corrections bac2009
éNoncés+corrections bac2009Morom Bil Morom
 
Projet de programmation la conversion entre les bases
Projet de programmation   la conversion entre les bases Projet de programmation   la conversion entre les bases
Projet de programmation la conversion entre les bases Tunisie collège
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptxLamissGhoul1
 
Fonctions chaine
Fonctions chaineFonctions chaine
Fonctions chaineAfef Ilahi
 
Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Hichem Kemali
 
Cours Algorithme: Matrice
Cours Algorithme: MatriceCours Algorithme: Matrice
Cours Algorithme: MatriceInforMatica34
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap IInes Ouaz
 
Examen principal + Correction ASD
Examen principal + Correction ASDExamen principal + Correction ASD
Examen principal + Correction ASDInes Ouaz
 
Serie recurrents & arithmetiques
Serie recurrents & arithmetiquesSerie recurrents & arithmetiques
Serie recurrents & arithmetiquesmohamed_SAYARI
 
Les algorithmes d’approximation
Les algorithmes d’approximationLes algorithmes d’approximation
Les algorithmes d’approximationWael Ismail
 

Tendances (20)

Chap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-rechercheChap04 les-algorithme-de-tri-et-de-recherche
Chap04 les-algorithme-de-tri-et-de-recherche
 
Serie2
Serie2Serie2
Serie2
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmation
 
Exercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdfExercices_Python_Fenni_2023 -corrigé.pdf
Exercices_Python_Fenni_2023 -corrigé.pdf
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivité
 
Chapitre iv algorithmes de tri
Chapitre iv algorithmes de triChapitre iv algorithmes de tri
Chapitre iv algorithmes de tri
 
Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)
 
Serie
SerieSerie
Serie
 
Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018
 
éNoncés+corrections bac2009
éNoncés+corrections bac2009éNoncés+corrections bac2009
éNoncés+corrections bac2009
 
Projet de programmation la conversion entre les bases
Projet de programmation   la conversion entre les bases Projet de programmation   la conversion entre les bases
Projet de programmation la conversion entre les bases
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptx
 
Fonctions chaine
Fonctions chaineFonctions chaine
Fonctions chaine
 
Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)
 
Cours Algorithme: Matrice
Cours Algorithme: MatriceCours Algorithme: Matrice
Cours Algorithme: Matrice
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap I
 
Examen principal + Correction ASD
Examen principal + Correction ASDExamen principal + Correction ASD
Examen principal + Correction ASD
 
Correction
CorrectionCorrection
Correction
 
Serie recurrents & arithmetiques
Serie recurrents & arithmetiquesSerie recurrents & arithmetiques
Serie recurrents & arithmetiques
 
Les algorithmes d’approximation
Les algorithmes d’approximationLes algorithmes d’approximation
Les algorithmes d’approximation
 

En vedette

Serie tri revision_3si
Serie tri revision_3siSerie tri revision_3si
Serie tri revision_3siRiadh Harizi
 
Ch5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de TriCh5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de Trilotfibenromdhane
 
Les algorithmes avancés
Les algorithmes avancésLes algorithmes avancés
Les algorithmes avancésmohamed_SAYARI
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Sujets de preparation bac tp (sayari)
Sujets de preparation bac tp (sayari)Sujets de preparation bac tp (sayari)
Sujets de preparation bac tp (sayari)mohamed_SAYARI
 
exercices-corriges-dalgorithmique
exercices-corriges-dalgorithmiqueexercices-corriges-dalgorithmique
exercices-corriges-dalgorithmiquefast xp
 
Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Ines Ouaz
 
Chapitre 3 Les algorithmes de recherche et de tris
Chapitre 3 Les algorithmes de recherche et de trisChapitre 3 Les algorithmes de recherche et de tris
Chapitre 3 Les algorithmes de recherche et de trisMohamed Lahby
 
Ch2 Algorthmique Avancée - Récursivité
Ch2 Algorthmique Avancée - RécursivitéCh2 Algorthmique Avancée - Récursivité
Ch2 Algorthmique Avancée - Récursivitélotfibenromdhane
 
Ch7 algorithmes NP-Copmlétude
Ch7 algorithmes NP-CopmlétudeCh7 algorithmes NP-Copmlétude
Ch7 algorithmes NP-Copmlétudelotfibenromdhane
 
Ch3 Algorthmique Avancée - Méthodes Récursives
Ch3 Algorthmique Avancée - Méthodes RécursivesCh3 Algorthmique Avancée - Méthodes Récursives
Ch3 Algorthmique Avancée - Méthodes Récursiveslotfibenromdhane
 

En vedette (18)

Serie tri revision_3si
Serie tri revision_3siSerie tri revision_3si
Serie tri revision_3si
 
Ch5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de TriCh5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de Tri
 
Les algorithmes avancés
Les algorithmes avancésLes algorithmes avancés
Les algorithmes avancés
 
Animations tris
Animations trisAnimations tris
Animations tris
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Algo tri
Algo triAlgo tri
Algo tri
 
Coursasdch3
Coursasdch3Coursasdch3
Coursasdch3
 
Sujets de preparation bac tp (sayari)
Sujets de preparation bac tp (sayari)Sujets de preparation bac tp (sayari)
Sujets de preparation bac tp (sayari)
 
Les enregistrements
Les enregistrements Les enregistrements
Les enregistrements
 
Les algorithmes de tri
Les algorithmes de triLes algorithmes de tri
Les algorithmes de tri
 
exercices-corriges-dalgorithmique
exercices-corriges-dalgorithmiqueexercices-corriges-dalgorithmique
exercices-corriges-dalgorithmique
 
Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)
 
Chapitre 3 Les algorithmes de recherche et de tris
Chapitre 3 Les algorithmes de recherche et de trisChapitre 3 Les algorithmes de recherche et de tris
Chapitre 3 Les algorithmes de recherche et de tris
 
Ch2 Algorthmique Avancée - Récursivité
Ch2 Algorthmique Avancée - RécursivitéCh2 Algorthmique Avancée - Récursivité
Ch2 Algorthmique Avancée - Récursivité
 
Cats
CatsCats
Cats
 
Ch7 algorithmes NP-Copmlétude
Ch7 algorithmes NP-CopmlétudeCh7 algorithmes NP-Copmlétude
Ch7 algorithmes NP-Copmlétude
 
Ch3 Algorthmique Avancée - Méthodes Récursives
Ch3 Algorthmique Avancée - Méthodes RécursivesCh3 Algorthmique Avancée - Méthodes Récursives
Ch3 Algorthmique Avancée - Méthodes Récursives
 
Cours as dch3
Cours as dch3Cours as dch3
Cours as dch3
 

Similaire à Algorithmes de tri

Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétudeSana Aroussi
 
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdfChapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdfMbarkiIsraa
 
Chapitre 2 complexité
Chapitre 2 complexitéChapitre 2 complexité
Chapitre 2 complexitéSana Aroussi
 
Resumer algorithme recurent
Resumer algorithme recurentResumer algorithme recurent
Resumer algorithme recurentborhen boukthir
 
Cours Algorithme: Tableau
Cours Algorithme: TableauCours Algorithme: Tableau
Cours Algorithme: TableauInforMatica34
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite Saddem Chikh
 

Similaire à Algorithmes de tri (14)

Resumer sur les tris
Resumer sur les trisResumer sur les tris
Resumer sur les tris
 
Resume algorithme
Resume algorithmeResume algorithme
Resume algorithme
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétude
 
transparents-Algo-complexite.pdf
transparents-Algo-complexite.pdftransparents-Algo-complexite.pdf
transparents-Algo-complexite.pdf
 
Correction td2
Correction td2Correction td2
Correction td2
 
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdfChapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdf
 
Chapitre 2 complexité
Chapitre 2 complexitéChapitre 2 complexité
Chapitre 2 complexité
 
Courbes
CourbesCourbes
Courbes
 
Algo3.pdf
Algo3.pdfAlgo3.pdf
Algo3.pdf
 
Resumer algorithme recurent
Resumer algorithme recurentResumer algorithme recurent
Resumer algorithme recurent
 
Séries de Fourier
Séries de FourierSéries de Fourier
Séries de Fourier
 
Cours Algorithme: Tableau
Cours Algorithme: TableauCours Algorithme: Tableau
Cours Algorithme: Tableau
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite
 

Algorithmes de tri

  • 1. Algorithmes de TRI Algorithmique & Programmation I. Rappels 1) Activité 1 (Tri à bulles) a) Principe Le principe de cette méthode de tri consiste à balayer tout le tableau, comparer les éléments consécutifs et les échanger s'ils ne sont pas dans le bon ordre. Cette méthode peut se traduire par l’algorithme formel suivant : Comparer la première paire des éléments, 1- Si T [ 1 ] > T [ 2 ]alors permuter T [ 1 ] et T [ 2 ] et tenir compte de cette action. 2- Aller à la paire suivante et répéter les étapes 1 et 2 jusqu’à comparer la dernière paire. 3- Si une permutation a été réalisée (ou plusieurs) alors répéter ce qu’on vient de faire, sinon le tableau est trié. b) Algorithme 0) DEF PROC Tri_bulles( var T :tab ; N : entier) 1) Répéter echange  Faux Pour i de 1 à N - 1 Faire Si T [ i ] > T [ i + 1 ] Alors aux  T [ i ] T[i]T[i+1] PROC Permut (T [ i ], T [ i+1] ) T [ i + 1 ]  Aux echange  vrai Fin Si Fin Pour Jusqu’à (echange = Faux) 2) Fin Tri_bulles 2) Activité 2 (Tri par séléction) a) Principe Cette méthode peut se traduire par l’algorithme formel suivant : 1- Comparer tous les nombres afin de sélectionner le plus petit (ordre croissant), 2- Échanger le plus petit élément trouvé avec le premier élément, 3- Refaire les étapes 1 et 2 et rechercher le plus petit du tableau sauf le premier puis l’échanger avec le second. b) Algorithme 0) DEF PROC Tri_sélection( var T :tab ; N : entier) 1) Pour i de 1 à N - 1 Faire posmin  i Pour j de i+1 à N Faire Recherche de la position du Si T [ j ] < T [ posmin ] Alors posmin  j minimum « posmin » Fin Si Fin Pour Si i < > posmin Alors aux  T [ i ] T [ i ]  T [posmin ] T [posmin ]  aux Fin Si Fin Pour 2) Fin Tri_selection Enseignant: Mr SAYARI Page 1 /4 4 S.INFO
  • 2. Algorithmes de TRI Algorithmique & Programmation 3) Activité 3 (Tri par insertion) a) Principe C’est une méthode de tri qui consiste à prendre les éléments du tableau un par un puis d’insérer chacun à sa bonne palace façon que les éléments traités forment une liste triée. Cette méthode peut se traduire par l’algorithme formel suivant : 1- On commence par le deuxième élément, 2- Comparer l’élément choisis avec tous ses précédents dans le tableau et l’insérer dans sa bonne place, 3- Répéter l’étape 2 pour l’élément suivant jusqu’à arriver au dernier. b) Algorithme 0) DEF PROC Tri_insertion ( var T :tab ; N : entier) 1) Pour i de 2 à N Faire ji aux  T [ i ] Tant que (j > 1) ET ( T [ j – 1] > aux ) Faire Décalage de tous les éléments T[j]T[j–1] supérieurs à aux, «T [ i ]» dans la jj–1 Fin Tant que liste triée T [ j ]  Aux Fin Pour 2) Fin Tri_insertion II. TRI SHELL a) Principe - C’est une variante du tri par insertion - Shell propose une suite définie par : U1=1 et Un+1= 3 * Un +1 pour déterminer la valeur du pas. - Trie chaque liste d’éléments séparés par p positions chacun avec un tri par insertion. b) Exemple T 72 61 44 80 70 85 21 23 51 87 74 94 20 17 56 c) Analyse de la procédure TRI_SHELL Résultat= T 2) T= [ ] Tant que p>0 faire P  p div 3 Pour i de p à n faire Aux  T[i] Ji Tant que (j>p-1) et (T[j-p]>aux) Faire T[j]  T[j-p] J  j-p Fin Tant que T[j] aux Fin pour Fin Tant que 1) P=[p0 ] Tant que p<n Faire P  3*p+1 Fin Tant que Enseignant: Mr SAYARI Page 2 /4 4 S.INFO
  • 3. Algorithmes de TRI Algorithmique & Programmation d) Algorithme 0) DEF PROC TRI_SHELL (var T : tab ; n : entier) 1) P  0 Tant que p<n Faire P  3*p+1 Fin Tant que 2) Tant que p>0 faire P  p div 3 Pour i de p à n faire Aux  T[i] Ji Tant que (j>p-1) et (T[j-p]>aux) Faire T[j]  T[j-p] J  j-p Fin Tant que T[j] aux Fin pour Fin Tant que 3) Fin TRI_SHELL III. Application : TRI PAR FUSION a) principe - Le tri fusion est construit suivant la stratégie "diviser pour régner". - Le principe de base de la stratégie "diviser pour régner" est que pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires. Une fois chaque petit problème résolu, il n’y a plus qu’à combiner les différentes solutions pour résoudre le problème global. - La méthode "diviser pour régner" est tout à fait applicable au problème de tri : plutôt que de trier le tableau complet, il est préférable de trier deux sous tableaux de taille égale, puis de fusionner les résultats. - L’algorithme de tri par fusion à développer est récursif, En effet, les deux sous tableaux seront eux même triés à l’aide de l’algorithme de tri fusion. Un tableau ne comportant qu’un seul élément sera considéré comme trié. - Etapes de l’algorithme : Division de l’ensemble de valeurs en deux parties Tri de chacun des deux ensembles Fusion des deux ensembles b) Analyse de la procédure Tri_fusion DEF PROC TRI_FUSION (var T : tab ; d,f : entier) Résultat= TRI_FUSION TRI_FUSION= [ ] SI (d<f) Alors Mil (d+f) div 2 proc tri_fusion (t,d,mil) proc tri_Fusion(t,mil+1,f) proc fusionner(t,d,mil,f) Fin Si Enseignant: Mr SAYARI Page 3 /4 4 S.INFO
  • 4. Algorithmes de TRI Algorithmique & Programmation c) Analyse de la procédure Fusionner DEF PROC FUSIONNER (var T :tab ; d,mil,f :entier) Résultat= T T= [ ] pour i de d à f faire T[i]  V[i] Fn pour V= [i d , j mil+1 ] pour k de d à f faire Si (i<=mil) et (t[i] < t[j]) ou (j>f) alors V[k]  T[i] i  i+1 Sinon V[k]  T[j] j j+1 Fin si Fin pour Enseignant: Mr SAYARI Page 4 /4 4 S.INFO