Table des matières Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1. Environnement algorithmique et conventions . . . . . . . . . . . . . . . . . . . 1. Les étapes de développement d’une application . . . . . . . . . . . . . . . . . . . . . 2. Le pseudo-langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Le génie logiciel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. La performance algorithmique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Problèmes et exercices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 18 19 21 21 22 2. Les traitements logiques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. Les tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Les boucles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Les sous-programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. Complexité algorithmique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Problèmes et exercices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 23 29 40 43 45 46 3. La gestion des données. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. Principe de traitement des données. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Les tableaux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Les enregistrements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. Les pointeurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5. Les listes chaînées. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6. Gestion des données complexes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7. Variantes sur les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Problèmes et exercices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 51 52 63 66 70 78 82 85 85 4. La récursivité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Diviser pour résoudre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Suppression de la récursion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 89 92 93 © 2013 Pearson France – Algorithmique – Jean-Michel Léry 7672__book.indb 3 13/06/13 11:54 IV ◆ Algorithmique 4. Récursivité croisée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Problèmes et exercices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 95 96 5. Les données abstraites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. Les piles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Les files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Les arbres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Problèmes et exercices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 99 109 112 124 125 6. Les tris. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. Tris élémentaires. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Tris avancés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Problèmes et exercices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 127 138 150 150 7. Les recherches. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. La recherche séquentielle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. La recherche dichotomique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. La recherche par interpolation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. Tables de hachage ou adressage dispersé . . . . . . . . . . . . . . . . . . . . . . . . . . . 5. Les arbres de recherche équilibrés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Résumé. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Problèmes et exercices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 153 156 158 159 172 179 180 8. Les méthodes numériques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. Interpolation polynomiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Méthode des moindres carrés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Recherche des solutions d’équations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 183 193 198 9. Les algorithmes classiques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 1. Algorithme du plus court chemin de Dijkstra. . . . . . . . . . . . . . . . . . . . . . . 215 2. Algorithme de compression de données de Huffman . . . . . . . . . . . . . . . . 227 Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 © 2013 Pearson France – Algorithmique – Jean-Michel Léry 7672__book.indb 4 13/06/13 11:54