DUT SRC – IUT de Marne-la-Vallée          18/01/2012    INF220 - Algorithmique      Cours 1  Récursivité et tris          ...
Organisation pratique • Contact - Courriel : philippe.gambette@gmail.com   (INF220 doit apparaître dans le sujet du courri...
Sources • Cours de Jean-François Berdjugin à lIUT de Grenoble http://berdjugin.com/enseignements/inf/inf220/ • Cours de Xa...
Plan des cours du semestre • Récursivité • Tris • Notions de complexité • Listes • Arbres
Plan des cours du semestre • Récursivité • Tris                    cours 1 • Notions de complexité • Listes               ...
Plan du cours 1 – Récursivité et tris • Introduction à la récursivité • Traces dexécution de fonctions récursives • Les tr...
Plan du cours 1 – Récursivité et tris • Introduction à la récursivité • Traces dexécution de fonctions récursives • Les tr...
Récursivité 2 façons de le voir : • Une mise en abyme • Une baguette magique algorithmique
Récursivité • Une mise en abyme                 La “minute xkcd” - Jeu de rôle sur table                       http://xkcd...
Récursivité • Une mise en abyme                                                                http://www.apprendre-en-lig...
Récursivité • Une mise en abyme                                                                http://www.apprendre-en-lig...
Récursivité • Une mise en abyme                                                                http://www.apprendre-en-lig...
Récursivité • Une mise en abyme                                                                http://www.apprendre-en-lig...
Récursivité • Une baguette magique algorithmique Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et qu...
Récursivité • Une baguette magique algorithmique Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et qu...
Récursivité • Une baguette magique algorithmique Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et qu...
Récursivité • Une baguette magique algorithmique Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et qu...
Récursivité • Une baguette magique algorithmique Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et qu...
Récursivité • Une baguette magique algorithmique Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et qu...
Récursivité • Une baguette magique algorithmique Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et qu...
Récursivité • Une baguette magique algorithmique Exemple des factorielles : - la première factorielle est 1 - pour passer ...
Récursivité • Une baguette magique algorithmique Exemple des factorielles : - la première factorielle est 1 - pour passer ...
Récursivité • Une baguette magique algorithmique Exemple des factorielles : - la première factorielle est 1 - pour passer ...
Récursivité • Une baguette magique algorithmique Exemple des factorielles : - la première factorielle est 1 - pour passer ...
Plan du cours 1 – Récursivité et tris • Introduction à la récursivité • Traces dexécution de fonctions récursives • Les tr...
Récursivité • Une baguette magique algorithmique Exemple des factorielles : - la première factorielle est 1 - pour passer ...
Récursivité • Une baguette magique algorithmique Exemple des factorielles : - la première factorielle est 1 - pour passer ...
Récursivité • Une baguette magique algorithmique Exemple des factorielles : - la première factorielle est 1 - pour passer ...
Récursivité • Une baguette magique algorithmique Exemple des factorielles : - la première factorielle est 1 - pour passer ...
Récursivité Même concept que la preuve par récurrence   La “minute mathématique”   Théorème : Je sais monter une échelle
Récursivité Même concept que la preuve par récurrence   La “minute mathématique”   Théorème : Je sais monter une échelle  ...
Un autre algorithme récursif La multiplication Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et que ...
Un autre algorithme récursif La multiplication Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et que ...
Un autre algorithme récursif La multiplication Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et que ...
Un autre algorithme récursif La multiplication Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et que ...
Un autre algorithme récursif La multiplication Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et que ...
Un autre algorithme récursif La multiplication Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et que ...
Récursivité  Le labyrinthe et les robots tueurs :  10 personnes dans un labyrinthe poursuivies par des robots tueurs. Si o...
Récursivité  Le labyrinthe et les robots tueurs :  10 personnes dans un labyrinthe poursuivies par des robots tueurs. Si o...
Récursivité     Le labyrinthe et les robots tueurs :     10 personnes dans un labyrinthe poursuivies par des robots tueurs...
Récursivité                                                Algorithme trouveBouton                                        ...
Récursivité                                                 Algorithme trouveBouton                                       ...
Récursivité                                                 Algorithme trouveBouton                                       ...
Récursivité                                                 Algorithme trouveBouton                                       ...
Récursivité                                                 Algorithme trouveBouton                                       ...
Plan du cours 1 – Récursivité et tris • Introduction à la récursivité • Traces dexécution de fonctions récursives • Les tr...
Principe dun algorithme de tri Entrée : Ensemble déléments tous comparables deux à deux par un ordre ≤ Sortie : Éléments t...
Principe dun algorithme de tri Entrée : Ensemble déléments tous comparables deux à deux par un ordre ≤ Sortie : Éléments t...
Principe dun algorithme de tri Entrée : Ensemble déléments tous comparables deux à deux par un ordre ≤ Sortie : Éléments t...
Principe dun algorithme de tri Entrée : Ensemble déléments tous comparables deux à deux par un ordre ≤ Sortie : Éléments t...
Principe dun algorithme de tri Entrée : Ensemble déléments tous comparables deux à deux par un ordre ≤ Sortie : Éléments t...
Principe dun algorithme de tri Entrée : Ensemble déléments tous comparables deux à deux par un ordre ≤ Sortie : Éléments t...
Principe dun algorithme de tri Entrée : Ensemble déléments tous comparables deux à deux par un ordre ≤ Sortie : Éléments t...
Principe dun algorithme de tri Entrée : Ensemble déléments tous comparables deux à deux par un ordre ≤ Sortie : Éléments t...
Plan du cours 1 – Récursivité et tris • Introduction à la récursivité • Traces dexécution de fonctions récursives • Les tr...
Tri par sélection (ou tri par extraction)  Idée : à la i-ième étape, on prend le plus petit élément à partir de la i-ième ...
Tri par sélection (ou tri par extraction)   La “minute culturelle”                     http://www.youtube.com/watch?v=Ns4T...
Tri par sélection (ou tri par extraction)  Idée : à la i-ième étape, on prend le plus petit élément à partir de la i-ième ...
Tri par sélection (ou tri par extraction)  Idée : à la i-ième étape, on prend le plus petit élément à partir de la i-ième ...
Tri par sélection (ou tri par extraction)  Idée : à la i-ième étape, on prend le plus petit élément à partir de la i-ième ...
Tri par sélection (ou tri par extraction)  Idée : à la i-ième étape, on prend le plus petit élément à partir de la i-ième ...
Tri par sélection (ou tri par extraction)  Idée : à la i-ième étape, on prend le plus petit élément à partir de la i-ième ...
Tri par sélection (ou tri par extraction)  Idée : à la i-ième étape, on prend le plus petit élément à partir de la i-ième ...
Tri par sélection (ou tri par extraction)  Idée : à la i-ième étape, on prend le plus petit élément à partir de la i-ième ...
Plan du cours 1 – Récursivité et tris • Introduction à la récursivité • Traces dexécution de fonctions récursives • Les tr...
Tri à bulles  Idée : tant que le tableau nest pas trié, on le parcourt en effectuant  lopération suivante à la i-ième case...
Tri à bulles  Idée : tant que le tableau nest pas trié, on le parcourt en effectuant  lopération suivante à la i-ième case...
Tri à bulles  Idée : tant que le tableau nest pas trié, on le parcourt en effectuant  lopération suivante à la i-ième case...
Tri à bulles  Idée : tant que le tableau nest pas trié, on le parcourt en effectuant  lopération suivante à la i-ième case...
Tri à bulles  Idée : tant que le tableau nest pas trié, on le parcourt en effectuant  lopération suivante à la i-ième case...
Plan du cours 1 – Récursivité et tris • Introduction à la récursivité • Traces dexécution de fonctions récursives • Les tr...
Complexité des tris Combien de comparaisons ? (lié au temps dexécution de lalgorithme) Sur un exemple ou dans le pire des ...
Complexité des tris Combien de comparaisons ? (lié au temps dexécution de lalgorithme) Sur un exemple ou dans le pire des ...
Complexité des tris Combien de comparaisons ? (lié au temps dexécution de lalgorithme) Sur un exemple ou dans le pire des ...
Complexité des tris Combien de comparaisons ? (lié au temps dexécution de lalgorithme) Sur un exemple ou dans le pire des ...
Complexité des tris   Combien de comparaisons ? (lié au temps dexécution de lalgorithme)   Sur un exemple ou dans le pire ...
Complexité des tris Combien de comparaisons ? (lié au temps dexécution de lalgorithme) Sur un exemple ou dans le pire des ...
Prochain SlideShare
Chargement dans…5
×

INF220 - Algo DUT SRC1 - Cours 1

3 132 vues

Publié le

Publié dans : Formation
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
3 132
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1 755
Actions
Partages
0
Téléchargements
95
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

INF220 - Algo DUT SRC1 - Cours 1

  1. 1. DUT SRC – IUT de Marne-la-Vallée 18/01/2012 INF220 - Algorithmique Cours 1 Récursivité et tris Philippe Gambette
  2. 2. Organisation pratique • Contact - Courriel : philippe.gambette@gmail.com (INF220 doit apparaître dans le sujet du courriel). - Avant ou après le cours. - Possibilité de poser des questions, de demander des exercices supplémentaires dentrainement. • Notes et devoirs Chez soi : - Projet Monopoly : exercices à trous à remplir au plus tard la veille des cours/TP/TD pour vous inciter à travailler régulièrement et corriger vos erreurs. Annonce sur IRIS 6 jours avant. Pendant les cours : - Note globale de TP à la fin du semestre, prenant en compte votre avancée à chaque séance. - Devoir final le 18 juin.
  3. 3. Sources • Cours de Jean-François Berdjugin à lIUT de Grenoble http://berdjugin.com/enseignements/inf/inf220/ • Cours de Xavier Heurtebise à lIUT de Provence http://x.heurtebise.free.fr • Le livre de Java premier langage, dA. Tasso • http://xkcd.com, http://xkcd.free.fr
  4. 4. Plan des cours du semestre • Récursivité • Tris • Notions de complexité • Listes • Arbres
  5. 5. Plan des cours du semestre • Récursivité • Tris cours 1 • Notions de complexité • Listes cours 2 • Arbres
  6. 6. Plan du cours 1 – Récursivité et tris • Introduction à la récursivité • Traces dexécution de fonctions récursives • Les tris • Le tri par sélection • Le tri à bulles • Complexité des tris
  7. 7. Plan du cours 1 – Récursivité et tris • Introduction à la récursivité • Traces dexécution de fonctions récursives • Les tris • Le tri par sélection • Le tri à bulles • Complexité des tris
  8. 8. Récursivité 2 façons de le voir : • Une mise en abyme • Une baguette magique algorithmique
  9. 9. Récursivité • Une mise en abyme La “minute xkcd” - Jeu de rôle sur table http://xkcd.com/244 http://xkcd.free.fr?id=244
  10. 10. Récursivité • Une mise en abyme http://www.apprendre-en-ligne.net/blog/index.php/2008/03/29/916-mise-en-abyme Photo Ethan Clements http://ethanclements.blogspot.com/2010/07/mise-en-abyme.html
  11. 11. Récursivité • Une mise en abyme http://www.apprendre-en-ligne.net/blog/index.php/2008/03/29/916-mise-en-abyme Comment dessiner ces images ? Photo Ethan Clements http://ethanclements.blogspot.com/2010/07/mise-en-abyme.html
  12. 12. Récursivité • Une mise en abyme http://www.apprendre-en-ligne.net/blog/index.php/2008/03/29/916-mise-en-abyme Comment dessiner ces images ? Limage contient une plus petite version delle-même. Photo Ethan Clements http://ethanclements.blogspot.com/2010/07/mise-en-abyme.html
  13. 13. Récursivité • Une mise en abyme http://www.apprendre-en-ligne.net/blog/index.php/2008/03/29/916-mise-en-abyme Comment dessiner ces images ? Pour dessiner la grande image, jutilise le dessin de limage en plus petit. Photo Ethan Clements http://ethanclements.blogspot.com/2010/07/mise-en-abyme.html
  14. 14. Récursivité • Une baguette magique algorithmique Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et que je sais construire le premier objet, alors je sais construire tous les objets.
  15. 15. Récursivité • Une baguette magique algorithmique Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et que je sais construire le premier objet, alors je sais construire tous les objets. Exemple des factorielles : factorielle(1) = 1 factorielle(2) = 1x2 = 2 factorielle(3) = 1x2x3 = 6 factorielle(4) = 1x2x3x4 = 24 ...
  16. 16. Récursivité • Une baguette magique algorithmique Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et que je sais construire le premier objet, alors je sais construire tous les objets. Exemple des factorielles : Initialisation : factorielle(1) = 1 factorielle(2) = 1x2 = 2 Formule dhérédité : factorielle(3) = 1x2x3 = 6 factorielle(4) = 1x2x3x4 = 24 ...
  17. 17. Récursivité • Une baguette magique algorithmique Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et que je sais construire le premier objet, alors je sais construire tous les objets. Exemple des factorielles : Initialisation : factorielle(1) = 1 factorielle(1) = 1 factorielle(2) = 1x2 = 2 Formule dhérédité : factorielle(n) = … factorielle(n-1) ... factorielle(3) = 1x2x3 = 6 factorielle(4) = 1x2x3x4 = 24 ...
  18. 18. Récursivité • Une baguette magique algorithmique Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et que je sais construire le premier objet, alors je sais construire tous les objets. Exemple des factorielles : Initialisation : factorielle(1) = 1 factorielle(1) = 1 factorielle(2) = 1x2 = 2 Formule dhérédité : factorielle(n) = factorielle(n-1) x n factorielle(3) = 1x2x3 = 6 factorielle(4) = 1x2x3x4 = 24 ...
  19. 19. Récursivité • Une baguette magique algorithmique Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et que je sais construire le premier objet, alors je sais construire tous les objets. Exemple des factorielles : Initialisation : factorielle(1) = 1 x2 factorielle(1) = 1 factorielle(2) = 1x2 = 2 Formule dhérédité : factorielle(n) = factorielle(n-1) x n factorielle(3) = 1x2x3 = 6 factorielle(4) = 1x2x3x4 = 24 ...
  20. 20. Récursivité • Une baguette magique algorithmique Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et que je sais construire le premier objet, alors je sais construire tous les objets. Exemple des factorielles : Initialisation : factorielle(1) = 1 x2 factorielle(1) = 1 factorielle(2) = 1x2 = 2 x3 Formule dhérédité : factorielle(n) = factorielle(n-1) x n factorielle(3) = 1x2x3 = 6 x4 factorielle(4) = 1x2x3x4 = 24 ...
  21. 21. Récursivité • Une baguette magique algorithmique Exemple des factorielles : - la première factorielle est 1 - pour passer de factorielle(n-1) à factorielle(n), je multiplie par n Algorithme factorielle Entrées : Type de sortie : Variable : Début Fin
  22. 22. Récursivité • Une baguette magique algorithmique Exemple des factorielles : - la première factorielle est 1 - pour passer de factorielle(n-1) à factorielle(n), je multiplie par n Algorithme factorielle Entrées : entier n Type de sortie : entier Variable : entier resultat Début si n=1 alors : resultat ← 1 sinon : resultat ← n x factorielle(n-1) renvoyer resultat Fin
  23. 23. Récursivité • Une baguette magique algorithmique Exemple des factorielles : - la première factorielle est 1 - pour passer de factorielle(n-1) à factorielle(n), je multiplie par n Algorithme factorielle Entrées : entier n Type de sortie : entier Variable : entier resultat Début si n=1 alors : resultat ← 1 sinon : entier resultat ← n x factorielle(n-1) renvoyer resultat entier Fin
  24. 24. Récursivité • Une baguette magique algorithmique Exemple des factorielles : - la première factorielle est 1 - pour passer de factorielle(n-1) à factorielle(n), je multiplie par n version non récursive : Algorithme factorielle Algorithme factorielle Entrées : entier n Entrées : entier n Type de sortie : entier Type de sortie : entier Variable : entier resultat Variable : entier resultat Début Début si n=1 alors : resultat ← 1 resultat ← 1 Pour i de 2 à n faire : sinon : resultat ← i x resultat resultat ← n x factorielle(n-1) FinPour renvoyer resultat renvoyer resultat Fin Fin
  25. 25. Plan du cours 1 – Récursivité et tris • Introduction à la récursivité • Traces dexécution de fonctions récursives • Les tris • Le tri par sélection • Le tri à bulles • Complexité des tris
  26. 26. Récursivité • Une baguette magique algorithmique Exemple des factorielles : - la première factorielle est 1 - pour passer de factorielle(n-1) à factorielle(n), je multiplie par n Algorithme factorielle Trace de factorielle(4) : Entrées : entier n Type de sortie : entier ? Variable : entier resultat factorielle(4) Début si n=1 alors : resultat ← 1 sinon : resultat ← n x factorielle(n-1) renvoyer resultat Fin
  27. 27. Récursivité • Une baguette magique algorithmique Exemple des factorielles : - la première factorielle est 1 - pour passer de factorielle(n-1) à factorielle(n), je multiplie par n Algorithme factorielle Trace de factorielle(4) : Entrées : entier n Type de sortie : entier ? Variable : entier resultat factorielle(4) Début si n=1 alors : ? resultat ← 1 factorielle(3) sinon : resultat ← n x factorielle(n-1) renvoyer resultat Fin
  28. 28. Récursivité • Une baguette magique algorithmique Exemple des factorielles : - la première factorielle est 1 - pour passer de factorielle(n-1) à factorielle(n), je multiplie par n Algorithme factorielle Trace de factorielle(4) : Entrées : entier n Type de sortie : entier ? Variable : entier resultat factorielle(4) Début si n=1 alors : ? resultat ← 1 factorielle(3) sinon : resultat ← n x factorielle(n-1) ? renvoyer resultat factorielle(2) Fin ? factorielle(1)
  29. 29. Récursivité • Une baguette magique algorithmique Exemple des factorielles : - la première factorielle est 1 - pour passer de factorielle(n-1) à factorielle(n), je multiplie par n Algorithme factorielle Trace de factorielle(4) : Entrées : entier n Type de sortie : entier 24 Variable : entier resultat factorielle(4) Début si n=1 alors : 6 resultat ← 1 factorielle(3) sinon : resultat ← n x factorielle(n-1) 2 renvoyer resultat factorielle(2) Fin 1 factorielle(1)
  30. 30. Récursivité Même concept que la preuve par récurrence La “minute mathématique” Théorème : Je sais monter une échelle
  31. 31. Récursivité Même concept que la preuve par récurrence La “minute mathématique” Théorème : Je sais monter une échelle Démonstration : Initialisation : je sais monter depuis le sol jusquau premier barreau. Hérédité : si je sais monter jusquau (n-1)-ième barreau, je saurai monter jusquau n-ième barreau.
  32. 32. Un autre algorithme récursif La multiplication Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et que je sais construire le premier objet, alors je sais construire tous les objets. Pour calculer a x n : Exemple : ax0=0 Initialisation : ? ax1=a ? a x 2 = 2a a x 3 = 3a ? Formule dhérédité :
  33. 33. Un autre algorithme récursif La multiplication Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et que je sais construire le premier objet, alors je sais construire tous les objets. Pour calculer a x n : Exemple : ax0=0 Initialisation : ? ax1=a ? ax0= a x 2 = 2a a x 3 = 3a ? Formule dhérédité : a x n = … a x (n-1) …
  34. 34. Un autre algorithme récursif La multiplication Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et que je sais construire le premier objet, alors je sais construire tous les objets. Pour calculer a x n : Exemple : 3x0=0 Initialisation : +3 3x1=3 +3 ax0= 3x2=6 3x3=9 +3 Formule dhérédité : 3 x 4 = 12 a x n = … a x (n-1) …
  35. 35. Un autre algorithme récursif La multiplication Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et que je sais construire le premier objet, alors je sais construire tous les objets. Pour calculer a x n : Initialisation : ax0=0 Formule dhérédité : a x n = a x (n-1) + a
  36. 36. Un autre algorithme récursif La multiplication Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et que je sais construire le premier objet, alors je sais construire tous les objets. Algorithme produit Pour calculer a x n : Entrées : Type de sortie : Initialisation : Variable : Début ax0=0 Formule dhérédité : a x n = a x (n-1) + a Fin
  37. 37. Un autre algorithme récursif La multiplication Si je sais construire le n-ième objet à partir du (n-1)-ième objet, et que je sais construire le premier objet, alors je sais construire tous les objets. Algorithme produit Pour calculer a x n : Entrées : entiers a et n Type de sortie : entier Initialisation : Variable : entier resultat Début ax0=0 si n=0 alors : resultat ← 0 Formule dhérédité : sinon : resultat ← produit(a,n-1) + a a x n = a x (n-1) + a renvoyer resultat Fin
  38. 38. Récursivité Le labyrinthe et les robots tueurs : 10 personnes dans un labyrinthe poursuivies par des robots tueurs. Si on appuie sur le bouton stop dans les 5 minutes, les robots sont désactivés.
  39. 39. Récursivité Le labyrinthe et les robots tueurs : 10 personnes dans un labyrinthe poursuivies par des robots tueurs. Si on appuie sur le bouton stop dans les 5 minutes, les robots sont désactivés. d2 d4 Algorithme TrouveBouton d1 Entrées : entier nombrePersonnes, d5 flottant tempsRestant, d3 chaîne de caractères direction Type de sortie : booléen d7 d6
  40. 40. Récursivité Le labyrinthe et les robots tueurs : 10 personnes dans un labyrinthe poursuivies par des robots tueurs. Si on appuie sur le bouton stop dans les 5 minutes, les robots sont désactivés. d2 d4 Algorithme trouveBoutond1 Entrées : entier nombrePersonnes, flottant d5 tempsRestant, chaîne de caractères direction d3 Type de sortie : booléen Si on trouve le bouton à temps, on appuie dessus, et lalgorithme renvoie VRAI. Si on trouve une intersection, le groupe se sépare en deux. Si on ne trouve pas le bouton à temps, on renvoie FAUX. d7 d6
  41. 41. Récursivité Algorithme trouveBouton Entrées : entier nombrePersonnes, flottant tempsRestant, chaîne de caractères direction Type de sortie : booléen Si on trouve le bouton à temps, on appuie dessus, et lalgorithme renvoie VRAI. Si on trouve une intersection, le groupe se sépare en deux. Si on ne trouve pas le bouton à temps, on renvoie FAUX.Que renvoie trouveBouton(10,5,”d1”) ? Il faut faire la trace de trouveBouton(10,5,”d1”).
  42. 42. Récursivité Algorithme trouveBouton Entrées : entier nombrePersonnes, flottant tempsRestant, chaîne de caractères direction Type de sortie : booléen Si on trouve le bouton à temps, on appuie dessus, et lalgorithme renvoie VRAI. Si on trouve une intersection, le groupe se sépare en deux. Si on ne trouve pas le bouton à temps, on renvoie FAUX.Que renvoie trouveBouton(10,5,”d1”) ? Arbre dexécution de trouveBouton(10,5,”d1”). trouveBouton(10,5,”d1”) trouveBouton(5,4.5,”d2”) trouveBouton(5,4.5,”d3”)trouveBouton(2,4,”d4”) trouveBouton(3,4,”d5”)
  43. 43. Récursivité Algorithme trouveBouton Entrées : entier nombrePersonnes, flottant tempsRestant, chaîne de caractères direction Type de sortie : booléen Si on trouve le bouton à temps, on appuie dessus, et lalgorithme renvoie VRAI. Si on trouve une intersection, le groupe se sépare en deux. Si on ne trouve pas le bouton à temps, on renvoie FAUX.Que renvoie trouveBouton(10,5,”d1”) ? Arbre dexécution de trouveBouton(10,5,”d1”). trouveBouton(10,5,”d1”) trouveBouton(5,4.5,”d2”) trouveBouton(5,4.5,”d3”) FAUXtrouveBouton(3,4,”d4”) trouveBouton(2,4,”d5”)
  44. 44. Récursivité Algorithme trouveBouton Entrées : entier nombrePersonnes, flottant tempsRestant, chaîne de caractères direction Type de sortie : booléen Si on trouve le bouton à temps, on appuie dessus, et lalgorithme renvoie VRAI. Si on trouve une intersection, le groupe se sépare en deux. Si on ne trouve pas le bouton à temps, on renvoie FAUX.Que renvoie trouveBouton(10,5,”d1”) ? Arbre dexécution de VRAI trouveBouton(10,5,”d1”). trouveBouton(10,5,”d1”) VRAI trouveBouton(5,4.5,”d2”) trouveBouton(5,4.5,”d3”) FAUX VRAItrouveBouton(3,4,”d4”) trouveBouton(2,4,”d5”)
  45. 45. Récursivité Algorithme trouveBouton Entrées : entier nombrePersonnes, flottant tempsRestant, chaîne de caractères direction Type de sortie : booléen Si on trouve le bouton à temps, on appuie dessus, et lalgorithme renvoie VRAI. Si on trouve une intersection, le groupe se sépare en deux. Si on ne trouve pas le bouton à temps, on renvoie FAUX.Que renvoie trouveBouton(10,5,”d1”) ? Arbre dexécution de VRAI trouveBouton(10,5,”d1”). trouveBouton(10,5,”d1”) VRAI FAUX trouveBouton(5,4.5,”d2”) trouveBouton(5,4.5,”d3”) FAUX VRAI FAUX FAUXtrouveBouton(3,4,”d4”) trouveBouton(2,4,”d5”) trouveBouton(3,3.7,”d6”) trouveBouton(2,3.7,”d7”)
  46. 46. Plan du cours 1 – Récursivité et tris • Introduction à la récursivité • Traces dexécution de fonctions récursives • Les tris • Le tri par sélection • Le tri à bulles • Complexité des tris
  47. 47. Principe dun algorithme de tri Entrée : Ensemble déléments tous comparables deux à deux par un ordre ≤ Sortie : Éléments triés selon cet ordre, du plus petit au plus grand Ensemble déléments : quel type ?
  48. 48. Principe dun algorithme de tri Entrée : Ensemble déléments tous comparables deux à deux par un ordre ≤ Sortie : Éléments triés selon cet ordre, du plus petit au plus grand Ensemble déléments : quel type ? Type pour stocker plusieurs éléments ?
  49. 49. Principe dun algorithme de tri Entrée : Ensemble déléments tous comparables deux à deux par un ordre ≤ Sortie : Éléments triés selon cet ordre, du plus petit au plus grand Ensemble déléments : quel type ? Type pour stocker plusieurs éléments ? → un tableau ! → autres structures de données au prochain cours.
  50. 50. Principe dun algorithme de tri Entrée : Ensemble déléments tous comparables deux à deux par un ordre ≤ Sortie : Éléments triés selon cet ordre, du plus petit au plus grand Ensemble déléments Ordre Tous comparables deux à deux ? tableau dentiers plus petit tableau de chaînes lexicographique de caractères (du dictionnaire) tableau de cartes à jouer 2 ≤ 3 ≤ … ≤ 10 ≤ V≤D≤R≤1 tableau de cartes à jouer ♣ ≤ ♦ ≤ ♥ ≤ ♠ puis 2 ≤ 3 ≤ … ≤ 10 ≤ V≤D≤R≤1
  51. 51. Principe dun algorithme de tri Entrée : Ensemble déléments tous comparables deux à deux par un ordre ≤ Sortie : Éléments triés selon cet ordre, du plus petit au plus grand Ensemble déléments Ordre Tous comparables deux à deux ? tableau dentiers plus petit oui : 1 ≤ 2, 2 ≤ 3, 1 ≤ 3... tableau de chaînes lexicographique oui : a ≤ b, char ≤ charles, char ≤ chat... de caractères (du dictionnaire) tableau de cartes à jouer 2 ≤ 3 ≤ … ≤ 10 ≤ non : 5♣ incomparable avec 5♠ V≤D≤R≤1 tableau de cartes à jouer ♣ ≤ ♦ ≤ ♥ ≤ ♠ puis oui : A♣ ≤ 5♠, 5♠ ≤ 6♠, ... 2 ≤ 3 ≤ … ≤ 10 ≤ V≤D≤R≤1
  52. 52. Principe dun algorithme de tri Entrée : Ensemble déléments tous comparables deux à deux par un ordre ≤ Sortie : Éléments triés selon cet ordre, du plus petit au plus grand Exemple avec un tableau dentiers : 5 3 1 8 5 2 9 1 2 3 5 5 8 9 En anglais : trié = sorted trier = to sort
  53. 53. Principe dun algorithme de tri Entrée : Ensemble déléments tous comparables deux à deux par un ordre ≤ Sortie : Éléments triés selon cet ordre, du plus petit au plus grand Exemple avec un tableau dentiers : 5 3 1 8 5 2 9 1 2 3 5 5 8 9 En anglais : trié = sorted Algorithme inferieurOuEgal trier = to sort Entrées : ? Type de sortie : ? Exemple : inferieurOuEgal(5,8) renvoie ...
  54. 54. Principe dun algorithme de tri Entrée : Ensemble déléments tous comparables deux à deux par un ordre ≤ Sortie : Éléments triés selon cet ordre, du plus petit au plus grand Exemple avec un tableau dentiers : 5 3 1 8 5 2 9 1 2 3 5 5 8 9 En anglais : trié = sorted Algorithme inferieurOuEgal trier = to sort Entrées : deux entiers a et b Type de sortie : booléen Exemple : inferieurOuEgal(5,8) renvoie VRAI
  55. 55. Plan du cours 1 – Récursivité et tris • Introduction à la récursivité • Traces dexécution de fonctions récursives • Les tris • Le tri par sélection • Le tri à bulles • Complexité des tris
  56. 56. Tri par sélection (ou tri par extraction) Idée : à la i-ième étape, on prend le plus petit élément à partir de la i-ième case (comprise) et on léchange avec lélément de la i-ième case.
  57. 57. Tri par sélection (ou tri par extraction) La “minute culturelle” http://www.youtube.com/watch?v=Ns4TPTC8whw
  58. 58. Tri par sélection (ou tri par extraction) Idée : à la i-ième étape, on prend le plus petit élément à partir de la i-ième case (comprise) et on léchange avec lélément de la i-ième case. Exemple avec un tableau dentiers : 5 3 1 8 5 2 9 i vaut 1
  59. 59. Tri par sélection (ou tri par extraction) Idée : à la i-ième étape, on prend le plus petit élément à partir de la i-ième case (comprise) et on léchange avec lélément de la i-ième case. Exemple avec un tableau dentiers : 5 3 1 8 5 2 9 1 3 5 8 5 2 9
  60. 60. Tri par sélection (ou tri par extraction) Idée : à la i-ième étape, on prend le plus petit élément à partir de la i-ième case (comprise) et on léchange avec lélément de la i-ième case. Exemple avec un tableau dentiers : 5 3 1 8 5 2 9 1 3 5 8 5 2 9 1 2 5 8 5 3 9 1 2 3 8 5 5 9 1 2 3 5 8 5 9 1 2 3 5 5 8 9 1 2 3 5 5 8 9 Tri en place : on arrive à trier le tableau sans avoir besoin de créer un nouveau tableau.
  61. 61. Tri par sélection (ou tri par extraction) Idée : à la i-ième étape, on prend le plus petit élément à partir de la i-ième case (comprise) et on léchange avec lélément de la i-ième case. Exemple avec un tableau dentiers : 5 3 1 8 5 2 9 Algorithme positionMinimum Entrée : tableau dentiers tab, entier debut 1 3 5 8 5 2 9 Type de sortie : entier Variables : entiers position, i et min 1 2 5 8 5 3 9 Début 1 2 3 8 5 5 9 1 2 3 5 8 5 9 1 2 3 5 5 8 9 1 2 3 5 5 8 9 Fin
  62. 62. Tri par sélection (ou tri par extraction) Idée : à la i-ième étape, on prend le plus petit élément à partir de la i-ième case (comprise) et on léchange avec lélément de la i-ième case. Exemple avec un tableau dentiers : 5 3 1 8 5 2 9 Algorithme positionMinimum Entrée : tableau dentiers tab, entier debut 1 3 5 8 5 2 9 Type de sortie : entier Variables : entiers position, i et min 1 2 5 8 5 3 9 Début position ← debut 1 2 3 8 5 5 9 min ← Case(tab,debut) i ← debut 1 2 3 5 8 5 9 Tant que i≤Longueur(tab) faire : si Case(tab,i)<min alors : 1 2 3 5 5 8 9 position ← i min ← Case(tab,i) 1 2 3 5 5 8 9 i ← i+1 Fin Tant que renvoyer position Fin
  63. 63. Tri par sélection (ou tri par extraction) Idée : à la i-ième étape, on prend le plus petit élément à partir de la i-ième case (comprise) et on léchange avec lélément de la i-ième case. Exemple avec un tableau dentiers : 5 3 1 8 5 2 9 Algorithme triSelection Entrée : tableau dentiers tab 1 3 5 8 5 2 9 Type de sortie : tableau dentiers Variables : entiers i, temp, posMin 1 2 5 8 5 3 9 Début 1 2 3 8 5 5 9 1 2 3 5 8 5 9 1 2 3 5 5 8 9 1 2 3 5 5 8 9 Fin
  64. 64. Tri par sélection (ou tri par extraction) Idée : à la i-ième étape, on prend le plus petit élément à partir de la i-ième case (comprise) et on léchange avec lélément de la i-ième case. Exemple avec un tableau dentiers : 5 3 1 8 5 2 9 Algorithme triSelection Entrée : tableau dentiers tab 1 3 5 8 5 2 9 Type de sortie : tableau dentiers Variables : entiers i, temp, posMin 1 2 5 8 5 3 9 Début i←1 1 2 3 8 5 5 9 Tant que i<Longueur(tab) faire : posMin ← positionMinimum(tab,i) 1 2 3 5 8 5 9 //posMin peut être égal à i temp ← Case(tab,i) 1 2 3 5 5 8 9 Case(tab,i) ← Case(tab,posMin) Case(tab,posMin) ← temp 1 2 3 5 5 8 9 i ← i+1 Fin Tant que renvoyer tab Fin
  65. 65. Plan du cours 1 – Récursivité et tris • Introduction à la récursivité • Traces dexécution de fonctions récursives • Les tris • Le tri par sélection • Le tri à bulles • Complexité des tris
  66. 66. Tri à bulles Idée : tant que le tableau nest pas trié, on le parcourt en effectuant lopération suivante à la i-ième case : si elle est supérieure à la suivante, on les échange. Exemple avec un tableau dentiers : 5 3 1 8 5 2 9
  67. 67. Tri à bulles Idée : tant que le tableau nest pas trié, on le parcourt en effectuant lopération suivante à la i-ième case : si elle est supérieure à la suivante, on les échange. Exemple avec un tableau dentiers : Étape 1 : 5 3 1 8 5 2 9 3 5 1 8 5 2 9 3 1 5 8 5 2 9 3 1 5 8 5 2 9 3 1 5 5 8 2 9 3 1 5 5 2 8 9 3 1 5 5 2 8 9 Tableau trié ?
  68. 68. Tri à bulles Idée : tant que le tableau nest pas trié, on le parcourt en effectuant lopération suivante à la i-ième case : si elle est supérieure à la suivante, on les échange. Exemple avec un tableau dentiers : Étape 1 : Étape 2 : 5 3 1 8 5 2 9 3 1 5 5 2 8 9 3 5 1 8 5 2 9 1 3 5 5 2 8 9 ... 3 1 5 8 5 2 9 1 3 5 5 2 8 9 3 1 5 8 5 2 9 1 3 5 2 5 8 9 ... 3 1 5 5 8 2 9 1 3 5 2 5 8 9 3 1 5 5 2 8 9 3 1 5 5 2 8 9 Tableau trié ?
  69. 69. Tri à bulles Idée : tant que le tableau nest pas trié, on le parcourt en effectuant lopération suivante à la i-ième case : si elle est supérieure à la suivante, on les échange. Exemple avec un tableau dentiers : Étape 2 : Étape 3 : 3 1 5 5 2 8 9 1 3 5 2 5 8 9 ... 1 3 5 5 2 8 9 1 3 5 2 5 8 9 ... 1 3 5 5 2 8 9 1 3 2 5 5 8 9 ... 1 3 5 2 5 8 9 1 3 2 5 5 8 9 ... 1 3 5 2 5 8 9 Tableau trié ?
  70. 70. Tri à bulles Idée : tant que le tableau nest pas trié, on le parcourt en effectuant lopération suivante à la i-ième case : si elle est supérieure à la suivante, on les échange. Exemple avec un tableau dentiers : Étape 3 : Étape 4 : 1 3 5 2 5 8 9 1 3 2 5 5 8 9 ... 1 3 5 2 5 8 9 1 3 2 5 5 8 9 1 3 2 5 5 8 9 1 2 3 5 5 8 9 ... ... 1 3 2 5 5 8 9 1 2 3 5 5 8 9 Tableau trié ? Tableau trié ? Oui.
  71. 71. Plan du cours 1 – Récursivité et tris • Introduction à la récursivité • Traces dexécution de fonctions récursives • Les tris • Le tri par sélection • Le tri à bulles • Complexité des tris
  72. 72. Complexité des tris Combien de comparaisons ? (lié au temps dexécution de lalgorithme) Sur un exemple ou dans le pire des cas, pour n éléments. Tri à bulles Dans tous les cas : ≤ n étapes, n-1 comparaisons par étape donc ≤ n x (n-1) comparaisons au total Tri par sélection Pour n éléments : n étapes, n-i comparaisons par étape pour trouver le min
  73. 73. Complexité des tris Combien de comparaisons ? (lié au temps dexécution de lalgorithme) Sur un exemple ou dans le pire des cas, pour n éléments. Tri à bulles Dans tous les cas : ≤ n étapes, n-1 comparaisons par étape donc ≤ n x (n-1) comparaisons au total Tri par sélection Pour n éléments : n étapes, n-i comparaisons par étape pour trouver le min étape 1 : n-1 comparaisons étape 2 : n-2 comparaisons … étape n-2 : 2 comparaisons étape n-1 : 1 comparaison étape n : 0 comparaison
  74. 74. Complexité des tris Combien de comparaisons ? (lié au temps dexécution de lalgorithme) Sur un exemple ou dans le pire des cas, pour n éléments. Tri à bulles Dans tous les cas : ≤ n étapes, n-1 comparaisons par étape donc ≤ n x (n-1) comparaisons au total Tri par sélection Pour n éléments : n étapes, n-i comparaisons par étape pour trouver le min étape 1 : n-1 comparaisons étape 2 : n-2 comparaisons … nombre total de comparaisons = nombre de carrés du triangle noir étape n-2 : 2 comparaisons étape n-1 : 1 comparaison étape n : 0 comparaison
  75. 75. Complexité des tris Combien de comparaisons ? (lié au temps dexécution de lalgorithme) Sur un exemple ou dans le pire des cas, pour n éléments. Tri à bulles Dans tous les cas : ≤ n étapes, n-1 comparaisons par étape donc ≤ n x (n-1) comparaisons au total Tri par sélection Pour n éléments : n étapes, n-i comparaisons par étape pour trouver le min étape 1 : n-1 comparaisons étape 2 : n-2 comparaisons … nombre total de comparaisons = nombre de carrés du triangle noir = étape n-2 : 2 comparaisons nombre de carrés du rectangle divisé par 2 = étape n-1 : 1 comparaison étape n : 0 comparaison
  76. 76. Complexité des tris Combien de comparaisons ? (lié au temps dexécution de lalgorithme) Sur un exemple ou dans le pire des cas, pour n éléments. Tri à bulles Dans tous les cas : ≤ n étapes, n-1 comparaisons par étape donc ≤ n x (n-1) comparaisons au total Tri par sélection Pour n éléments : n étapes, n-i comparaisons par étape pour trouver le min étape 1 : n-1 comparaisons étape 2 : n-2 comparaisons … n nombre total de comparaisons =carrés nombre de carrés du triangle noir = étape n-2 : 2 comparaisons nombre de carrés du rectangle divisé par 2 = étape n-1 : 1 comparaison n(n-1)/2 étape n : 0 comparaison n-1 carrés
  77. 77. Complexité des tris Combien de comparaisons ? (lié au temps dexécution de lalgorithme) Sur un exemple ou dans le pire des cas, pour n éléments. Tri à bulles Dans le pire des cas (tableau trié dans le sens inverse) : n x (n-1) comparaisons Dans le meilleur cas (tableau trié) : n-1 comparaisons Tri par sélection Dans tous les cas : n x (n-1)/2 comparaisons

×