INF220 - Algo DUT SRC1 - Cours 1

3 105 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 105
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1 756
Actions
Partages
0
Téléchargements
92
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

×