DUT SRC – IUT de Marne-la-Vallée          23/01/2013    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 mise en abyme  Qu’est-ce qu’une poupée russe ? Photo Malix L. http://www.flickr.com/photos/_malix_/69709...
Récursivité • Une mise en abyme  Qu’est-ce qu’une poupée russe ?                                                    Une po...
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 ...
Prochain SlideShare
Chargement dans…5
×

INF220 - Algo DUT SRC1 - Cours 1 - 2013

810 vues

Publié le

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

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
810
Sur SlideShare
0
Issues des intégrations
0
Intégrations
5
Actions
Partages
0
Téléchargements
34
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

INF220 - Algo DUT SRC1 - Cours 1 - 2013

  1. 1. DUT SRC – IUT de Marne-la-Vallée 23/01/2013 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 Morpion : 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. - Note de remplissage de cours à trous et/ou note globale de TP à la fin du semestre, prenant en compte votre avancée à chaque séance. Pendant les cours : + note F. Kerdjoudj - Devoir final fin mai ou début juin (29 mai ?).
  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 mise en abyme Qu’est-ce qu’une poupée russe ? Photo Malix L. http://www.flickr.com/photos/_malix_/6970987365/
  15. 15. Récursivité • Une mise en abyme Qu’est-ce qu’une poupée russe ? Une poupée russe est une poupée qui contient : - soit rien - soit une autre poupée russe plus petite Photo Malix L. http://www.flickr.com/photos/_malix_/6970987365/
  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.
  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 : factorielle(1) = 1 factorielle(2) = 1x2 = 2 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(2) = 1x2 = 2 Formule dhérédité : 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 factorielle(1) = 1 factorielle(2) = 1x2 = 2 Formule dhérédité : factorielle(n) = … factorielle(n-1) ... 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 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 ...
  21. 21. 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 ...
  22. 22. 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 ...
  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 : Type de sortie : Variable : Début 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 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) Fin si renvoyer resultat Fin
  25. 25. 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) Fin si entier renvoyer resultat Fin
  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 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 Fin si renvoyer resultat renvoyer resultat Fin Fin
  27. 27. 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
  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 sinon : resultat ← n x factorielle(n-1) Fin si renvoyer resultat Fin
  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 ? Variable : entier resultat factorielle(4) Début Si n=1 alors : ? resultat ← 1 factorielle(3) sinon : resultat ← n x factorielle(n-1) Fin si renvoyer resultat Fin
  30. 30. 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) ? Fin si factorielle(2) renvoyer resultat ? Fin factorielle(1)
  31. 31. 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 Fin si factorielle(2) renvoyer resultat 1 Fin factorielle(1)
  32. 32. Récursivité Même concept que la preuve par récurrence La “minute mathématique” Théorème : Je sais monter une échelle
  33. 33. 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.
  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 : ax0=0 Initialisation : ? ax1=a ? a x 2 = 2a a x 3 = 3a ? Formule dhérédité :
  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 : 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) …
  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. 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) …
  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. Pour calculer a x n : Initialisation : ax0=0 Formule dhérédité : a x n = a x (n-1) + a
  38. 38. 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
  39. 39. 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 Fin si renvoyer resultat Fin
  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.
  41. 41. 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
  42. 42. 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
  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”) ? Il faut faire la trace de trouveBouton(10,5,”d1”).
  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 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”)
  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 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”)
  46. 46. 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”)
  47. 47. 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”)
  48. 48. 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
  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 ?
  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 : quel type ? Type pour stocker plusieurs éléments ?
  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 : quel type ? Type pour stocker plusieurs éléments ? → un tableau ! → autres structures de données au prochain cours.
  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 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
  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 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
  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 trier = to sort
  55. 55. 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 ...
  56. 56. 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
  57. 57. 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
  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.
  59. 59. Tri par sélection (ou tri par extraction) La “minute culturelle” http://www.youtube.com/watch?v=Ns4TPTC8whw
  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 i vaut 1
  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 1 3 5 8 5 2 9
  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 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.
  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 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
  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 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 Fin si i ← i+1 Fin Tant que renvoyer position Fin
  65. 65. 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
  66. 66. 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

×