Vous êtes sur la page 1sur 59

Algorithmes de tri.

1ADS Algorithm in Python

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


Algorithmes  de  tri.  

Objec&fs  de  ce  module  

• Présenter  le  problème  important  du  tri  d’un  


ensemble  de  données  numériques.  

• Proposer  plusieurs  solu/ons  de  natures  


diverses  :  
– Algorithmes  itéra/fs.  
– Algorithmes  récursifs.  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


Algorithmes  de  tri.  

Plan  de  ce  module  

1. Généralités.  
2. Algorithmes  itéra/fs.  
3. Algorithmes  récursifs.  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


Algorithmes  de  tri.  

1.  GÉNÉRALITÉS.  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


1.  Généralités.  

Plan  de  ce  chapitre  

a. But  des  algorithmes  de  tri.  


b. Méthodes  u/lisées.  
 

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


1.  Généralités.  

a.  But  des  algorithmes  de  tri.  


• À   par/r   d’une   liste   de   données   numériques,   réordonner  
ces  valeurs  par  ordre  croissant.  

• La   liste   en   ques/on   sera   donc   un   paramètre     lu   et   modifié  


par  ces  procédures  de  tri.  

• Pour   ce   faire   on   n’u/lisera   pas   de   listes   intermédiaires,   les  


tris  se  feront  “sur  place”.  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


1.  Généralités.  

a.  But  des  algorithmes  de  tri.  


Exemple  
 
• La  liste  

7   5   14   4   10   2   8  

• deviendra  une  fois  triée  :  

2   4   5   7   8   10   14  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


1.  Généralités.  

a.  But  des  algorithmes  de  tri.  


Remarques  
 
• Il   s’agit   d’un   des   plus   problèmes   les   plus   classiques   de  
l’algorithmique.  

• De   nombreuses   résolu/ons   sont   possibles   avec   des  


méthodes  radicalement  différentes.  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


1.  Généralités.  

a.  But  des  algorithmes  de  tri.  


Remarques  
 
• Les   plus   acharnés   pourront   consulter   la   série   de   livres   de  
Donald   Knuth   “the   art   of   computer   programming”   où   plus  
d’une  trentaine  d’algorithmes  de  tri  sont  étudiés  en  détail.  

• Pour  notre  part,  nous  n’en  étudierons  que  5...  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


1.  Généralités.  

b.  Méthodes  u&lisées.  
Deux  types  d’algorithmes  de  tri  étudiés  dans  ce  module  :  
 
• Algorithmes  itéra&fs.  

• Algorithmes   récursifs,   basés   sur   le   principe   “diviser   c’est  


régner”,   c’est-­‐à-­‐dire   dans   lesquels   le   tri   d’une   liste  
s’effectue   en   la   divisant   plusieurs   fois   par   deux   jusqu’à  
obten/on   de   sous-­‐listes   ne   comportant   qu’une   seule  
valeur.  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


1.  Généralités.  

b.  Méthodes  u&lisées.  
Remarques  

• Dans  ce  module  de  cours  on  se  contentera  juste  de  décrire  
les  algorithmes,  et  de  les  appliquer  sur  des  exemples.  

• Le  travail  d’implémenta&on  de  ces  algorithmes  en  Python  


sera  fait  lors  de  la  prochaine  séance  Labs.  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


1.  Généralités.  

Fin  de  ce  chapitre  

Avez  –  vous  des  ques/ons  ?  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


Algorithmes  de  tri.  

2.  ALGORITHMES  ITÉRATIFS.  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs.  

Plan  de  ce  chapitre  

a. Tri  par  sélec/on.  


b. Tri  à  bulles.  
c. Tri  par  inser/on.  
 

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

a.  Tri  par  sélec&on.  


Principe  

•On   cherche   dans   la   liste   la   plus   pe/te   valeur   et   on   la  


permute  avec  le  premier  élément  de  la  liste.  
•On   cherche   ensuite   la   plus   pe/te   valeur   à   par/r   de   la  
deuxième  case  et  on  la  permute  avec  le  second  élément  de  la  
liste.  

•Et  ainsi  de  suite  jusqu’à  avoir  parcouru  tout  la  liste.  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

a.  Tri  par  sélec&on.  


Exemple    
 
• On  considère  la  liste  suivante  de  5  en/ers  :  

5   8   2   9   5  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

a.  Tri  par  sélec&on.  


Exemple  :  1  ère  itéra/on  
 
• On  détermine  le  minimum  des  éléments  de  la  liste  :  

5   8   2   9   5  

• Et  on  le  permute  avec  le  premier  élément  de  la  liste  :  
    2   8   5   9   5  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

a.  Tri  par  sélec&on.  


Exemple  :  2  ème  itéra/on  
 
• On  détermine  le  minimum  des  éléments  de  la  liste  à  par/r  
de  la  deuxième  case  :  

2   8   5   9   5  

• et  on  le  permute  avec  le  second  élément  de  la  liste  :  

2   5   8   9   5  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

a.  Tri  par  sélec&on.  


Exemple  :  3  ème  itéra/on  
 
• On  détermine  le  minimum  des  éléments  de  la  liste  à  par/r  
de  la  troisième  case  :  

2   5   8   9   5  

• et  on  le  permute  avec  le  troisième  élément  de  la  liste  :  

2   5   5   9   8  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

a.  Tri  par  sélec&on.  


Exemple  :  4  ème  itéra/on  
 
• On  détermine  le  minimum  des  éléments  de  la  liste  à  par/r  
de  la  quatrième  case  :  

2   5   5   9   8  

• et  on  le  permute  avec  le  quatrième  élément  de  la  liste  :  

2   5   5   8   9  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

a.  Tri  par  sélec&on.  


Exemple  :  fin  
 
• Le  cinquième  élément  la  liste  est  de  fait  à  sa  place,  le  tri  
est  terminé  :  

2   5   5   8   9  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

b.  Tri  à  bulles.  
Principe    
 
•On   parcourt   la   liste   en   comparant   chaque   élément   et   son  
successeur.  
•Si  ce  dernier  est  plus  pe/t  on  les  permute.  

•On   réitère   ce   parcours   de   la   liste   jusqu’à   qu’il   n’y   ait   plus   de  


permuta/ons  à  faire.  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

b.  Tri  à  bulles.  
Exemple    
 
• On  considère  la  liste  suivante  de  5  en/ers  :  

5   8   2   9   5  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

b.  Tri  à  bulles.  
Exemple  :  1  ère  itéra/on    
 
• On  compare  5  et  8  :  

5   8   2   9   5  

• Pas  de  permuta/on  à  faire.  

5   8   2   9   5  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

b.  Tri  à  bulles.  
Exemple  :  1  ère  itéra/on  
 
• On  compare  8  et  2  :  

5   8   2   9   5  

• On  les  permute  :    

5   2   8   9   5  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

b.  Tri  à  bulles.  
Exemple  :  1  ère  itéra/on  
 
• On  compare  8  et  9  :  

5   2   8   9   5  

• Pas  de  permuta/on  à  faire.  


   
5   2   8   9   5  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

b.  Tri  à  bulles.  
Exemple  :  1  ère  itéra/on  (fin)  
 
• On  compare  9  et  5  :  

5   2   8   9   5  

• On  les  permute  :    
   
5   2   8   5   9  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

b.  Tri  à  bulles.  
Exemple  :  2  ème  itéra/on  
 
• On  compare  5  et  2  :  

5   2   8   5   9  

• On  les  permute  :    
   
2   5   8   5   9  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

b.  Tri  à  bulles.  
Exemple  :  2  ème  itéra/on  
 
• On  compare  5  et  8  :  

2   5   8   5   9  

• Pas  de  permuta/on  à  faire.  


   
2   5   8   5   9  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

b.  Tri  à  bulles.  
Exemple  :  2  ème  itéra/on  (fin)  
 
• On  compare  8  et  5  :  

2   5   8   5   9  

• On  les  permute  :    

2   5   5   8   9  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

b.  Tri  à  bulles.  
Exemple  :  3  ème  itéra/on  
 
• On  parcourt  de  nouveau  la  liste,  mais  ce8e  fois  ci  on  
constate  qu’il  n’y  a  plus  de  permuta/ons  à  effectuer.  

• Pas  de  4  ème  itéra/on,  la  liste  est  triée  :  

2   5   5   8   9  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

c.  Tri  par  inser&on.  


Principe  
 
• On  ordonne  les  deux  premiers  éléments  de  la  liste.  
• On  insère  le  3  ème  élément  de  sorte  que  les  trois  premiers  
éléments  de  la  liste  soient  triés.  

• On  parcourt  ainsi  toute  la  liste  en  insérant  sucessivement  


chaque   élément   à   sa   “bonne”   place   dans   la   par/e   déjà  
triée  de  la  liste.    

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

c.  Tri  par  inser&on.  


Exemple    
 
• On  considère  la  liste  suivante  de  5  en/ers  :  

5   3   1   4   2  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

c.  Tri  par  inser&on.  


• On  considère  la  valeur  3  :  
5   3   1   4   2  

• Que  l’on  “re/re”  provisoirement  de  la  liste  :  


5   1   4   2  

• On  décale  le  5  :  
5   1   4   2  

• Et  on  réinsère  la  valeur  3  :  


3   5   1   4   2  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

c.  Tri  par  inser&on.  


• On  considère  la  valeur  1  :  
3   5   1   4   2  

• Que  l’on  “re/re”  provisoirement  de  la  liste  :  


3   5   4   2  

• On  décale  le  3  et  le  5  :  


3   5   4   2  

• Et  on  réinsère  la  valeur  1  :  


1   3   5   4   2  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

c.  Tri  par  inser&on.  


• On  considère  la  valeur  4  :  
1   3   5   4   2  

• Que  l’on  “re/re”  provisoirement  de  la  liste  :  


1   3   5   2  

• On  décale  le  5  :  
1   3   5   2  

• Et  on  réinsère  la  valeur  4  :  


1   3   4   5   2  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

c.  Tri  par  inser&on.  


• On  considère  la  valeur  2  :  
1   3   4   5   2  

• Que  l’on  “re/re”  provisoirement  de  la  liste  :  


1   3   4   5  

• On  décale  le  3,  le  4  et  le  5  :  


1   3   4   5  

• Et  on  réinsère  la  valeur  2  :  


1   2   3   4   5  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs  

c.  Tri  par  inser&on.  


Exemple  :  fin  
 
• Chaque  élément  a  été  inséré  à  sa  place,  le  tri  est  terminé  :  

1   2   3   4   5  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


2.  Algorithmes  itéra/fs.  

Fin  de  ce  chapitre  

Avez  –  vous  des  ques/ons  ?  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


Algorithmes  de  tri.  

3.  ALGORITHMES  RÉCURSIFS.  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


3.  Algorithmes  récursifs.  

Plan  de  ce  chapitre  

a. Tri  rapide.  
b. Tri  fusion.  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


3.  Algorithmes  récursifs  

a.  Tri  rapide.  
Principe  
 
•On   considère   le   premier   élément   de   la   liste   et   on   le  
posi/onne   à   sa   place   défini/ve,   avec   à   sa   gauche   une   sous-­‐
liste  cons/tuée  d’éléments  qui  lui  sont  inférieurs  ou  et  égaux  
et   à   sa   droite   une   sous-­‐liste   cons/tuée   d’éléments   qui   lui  
sont  strictement  supérieurs.  
•On  applique  alors  ce  même  traitement  aux  deux  sous-­‐listes.  
•Et   ce   de   façon   récursive   jusqu’à   obtenir   des   listes   d’une  
seule  valeur.  
 
©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  
3.  Algorithmes  récursifs  

a.  Tri  rapide.  
Exemple  
 
• On  considère  la  liste  suivant  de  8  en/ers  :    

7   5   14   4   10   2   12   16  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


3.  Algorithmes  récursifs  

a.  Tri  rapide.  
Exemple  :  premier  appel  
 
• On  va  placer  la  valeur  7  :    

7   5   14   4   10   2   12   16  

4   5   2   7   10   14   12   16  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


3.  Algorithmes  récursifs  

a.  Tri  rapide.  
Exemple  :  second  appel  
 
• On  va  placer  les  valeurs  4  et  10  :    

4   5   2   7   10   14   12   16  

2   4   5   7   10   14   12   16  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


3.  Algorithmes  récursifs  

a.  Tri  rapide.  
Exemple  :  troisième  appel  
 
• On  va  placer  les  valeurs  2,  5  et  14  :    

2   4   5   7   10   14   12   16  

2   4   5   7   10   12   14   16  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


3.  Algorithmes  récursifs  

a.  Tri  rapide.  
Exemple  :  quatrième  appel  
 
• On  va  placer  les  valeurs  12  et  16  :    
 
2   4   5   7   10   12   14   16  

2   4   5   7   10   12   14   16  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


3.  Algorithmes  récursifs  

a.  Tri  rapide.  
Exemple  :  fin  
 
• Tous  les  éléments  de  la  liste  ont  été  placés,  le  tri  est  
terminé  :  

2   4   5   7   10   12   14   16  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


3.  Algorithmes  récursifs  

b.  Tri  fusion.  
Principe  
 
• À  chaque  appel  récursif  :  
– On  scinde  la  liste  à  trier  en  deux  sous-­‐listes  de  même  
taille  (à  un  élément  près).  
– On  trie  chacune  de  ces  deux  sous-­‐listes.  
– On  fusionne  les  deux  sous-­‐listes  triées  en  une  seule.  

• La  condi/on  d’arrêt  à  la  récursivité  est  l’obten/on  de  listes  


d’une  seule  valeur,  et  donc  déjà  triées.  
 
©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  
3.  Algorithmes  récursifs  

b.  Tri  fusion.  
Exemple  
 
• On  considère  la  liste  suivante  de  8  en/ers  :    

7   5   14   4   10   2   8  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


3.  Algorithmes  récursifs  

b.  Tri  fusion.  
Exemple  

• On  la  scinde  en  deux  sous-­‐listes  :  

7   5   14   4   10   2   8  

7   5   14   4   10   2   8  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


3.  Algorithmes  récursifs  

b.  Tri  fusion.  
Exemple  

• Sous-­‐listes  que  l’on  scinde  à  leur  tour  :  

7   5   14   4   10   2   8  

7   5   14   4   10   2   8  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


3.  Algorithmes  récursifs  

b.  Tri  fusion.  
Exemple  

• Sous-­‐listes  que  l’on  scinde  à  leur  tour  :  

7   5   14   4   10   2   8  

7   5   14   4   10   2   8  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


3.  Algorithmes  récursifs  

b.  Tri  fusion.  
Exemple  
• Ces  sous-­‐listes  sont  triées  (elles  n’ont  qu’un  élément),  on  
va  maintenant  les  fusionner  :  

7   5   14   4   10   2   8  

5   7   4   14   2   10   8  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


3.  Algorithmes  récursifs  

b.  Tri  fusion.  
Exemple  
 
• De  nouveau  une  étape  de  fusionnnement  :  

5   7   4   14   2   10   8  

4   5   7   14   2   8   10  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


3.  Algorithmes  récursifs  

b.  Tri  fusion.  
Exemple  
 
• Encore  une  fusion  :  

4   5   7   14   2   8   10  

2   4   5   7   8   10   14  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


3.  Algorithmes  récursifs  

b.  Tri  fusion.  
Exemple  :  fin  
 
• On  a  fusionné  toutes  les  sous-­‐listes  obtenues  lors  des  
appels  récursifs,  le  tri  est  terminé.  

2   4   5   7   8   10   14  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


Titre  du  chapitre  

Fin  de  ce  chapitre  

Avez  –  vous  des  ques/ons  ?  

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  


Algorithmes de tri.

Autres structures de données.

©  SUPINFO  Interna/onal  University  –  h8p://www.supinfo.com  

Vous aimerez peut-être aussi