INF220 - Algo DUT SRC1 - Cours 1 - 2013

810 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
810
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
34
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

×