INITIATION A LA LALGORITHMIQUE ET AUX
STRUCTURES DE DONNEES
JACQUES COURTIN
IRENE KOWARSKI
JACQUES ARSAC
RESUME
Ce premier tome est consac à la construction d'algorithmes fondamentaux sur les
fichiers séquentiels et les vecteurs (structures à accès direct).
Il s'adresse aux étudiants de première année (DEUG, DEUST, IUT, BTS, MIAGE,
MST, Licence, Ecoles d'ingénieurs, Institut de programmation,...) et plus généralement
à tous les lecteurs désirant s'initier à la construction d'algorithmes corrects, qui sont la
base de toute bonne programmation. .
Les algorithmes sont écrits dans un langage proche du Pascal standard et leur
traduction dans un langage classique (Pascal, Fortran, Cob61,.,.) est aisée. Une
annexe, consace à la mise en œuvre des primitives "lire" et "écrire" sur les fichiers
séquentiels, permet de programmer facilement en Turbo-Pascal. De très nombreux
exemples et exercices permettent au lecteur de se familiariser avec la démarche
proposée et de vérifier que la méthode a bien été assimilée.
Le deuxième tome aborde l'étude des structures de données avancées que sont les listes chaînées, les piles, les tables et les arbres.
Les auteurs Y; mettent en évidence la notion de récursivité qui constitue une bonne initiation à l'utilisation des langages de l'intelligence
artificielle (Lisp, Prolog).
TABLE DES MATIERES
PREFACE
AVANT-PROPOS 1
1. LES COMPOSANTS ELEMENTAIRES DES ALGORITHMES 5
1.1. L'actioncrire" 6
1.2. Les entiers 7
1.2.1. Les orations de calcul algébrique 7
1.2.2. Variables entières: déclaration et action d'affectation 8
1.3. L'itération 12
1.4. La notion de procédure 14
1.4.1. Déclaration 14
1.4.2. Appel 15
1.4.3. Procédure avec unsultat 16
1.5. La notion de fonction 17
1.5.1. Déclaration 17
1.5.2. Appel de fonction 18
1.6. L'action conditionnelle 19
1.7. Les caractères et les chaînes 26
1.8. Les booens 29
1.9. La notion d'invariant 33
1.10. Construction d'un algorithme itératif 35
1.11. La modification de paramètres 38
2. LES FICIllERS SEQUENTIELS 43
2.1. Notion de fichier séquentiel et définitions 43
2.1.1. Définition 43
2.1.2. Définitions formelles 45
2.1.2.1. Fichierquentiel 45
2.1.2.2. Actions primitives d'acs 50
2.2. Algorithmes traitant un seul fichier 59
2.2.1. Somme des éléments d'un fichier f de nombres entiers non vide 59
2.2.2. Recherche de la valeur maximale contenue dans un fichier 62
2.2.3. Accès à un ément d'un fichier 65
2.2.3. Accès à un ément d'un fichier 65
2.2.3.1. Accès par position (accès au kième ément) 66
2.2.3.2. Accès associatif 72
2.2.3.3. Fichier ordonné (fichier tr) 76
2.2.4. Conclusion 85
2.3. Algorithmes traitant plusieurs fichiers 86
2.3.1. Algorithme de création, par copie, d'un fichier 86
2.3.2. Somme ou Concanation de deux fichiers 87
2.3.3. Eclatement d'un fichier en plusieurs fichiers 88
2.3.3.1. Eclatement d'un fichier à valeur dans N en deux fichiers
suivant le critère de parité 88
2.3.3.2. Eclatement d'un fichier en deux fichiers suivant le rang de l'élément 90
2.3.3.3. Eclatement d'un fichier en plusieurs monotonies 92
2.3.4. Fusion de plusieurs fichiers en un seul 95
2.3.4.1. Interclassement (ou fusion) de deux fichiers trs 95
2.3.5. Algorithmes de mise à jour 98
2.3.5.1. Insertion d'un ément dans un fichier 98
2.3.5.2. Suppression d'un ément dans un fichier 109
2.4. Con c lus ion 117
3. LES VECTEURS 119
3.1. Introduction 119
3.1.1. Notion de vecteur 119
3.1.2. Définitions formelles 121
3.1.2.1. Vecteur 121
3.1.2.2. Sous-vecteur 122
3.1.2.3. Accès à un ément d'un vecteur 123
3.1.2.4. Propr des vecteurs 123
3.1.2.5. Vecteur ordon (ou tr) 124
3.1.2.6. Autres notations 125
3.2. Algorithmes traitant un seul vecteur 125
3.2.1. Problème du parcours d'un vecteur 125
3.2.2. Algorithmes d'accès à un ément d'un vecteur 128
3.2.2.1. Recherche séquentielle dans un vecteur 128
3.2.2.2. Recherche dichotomique 136
3.3. Tris d'un vecteur 142
3.3.1. Tri parlection 142
3.3.1.1. Méthode 142
3.3.1.2. Schémas d'algorithme 144
3.3.1.3. Evaluation du coût de l'algorithme 147
3.3.2. Algorithme de tri par sélection et permutation 149
3.3.2.1. Principe 149
3.3.2.2. Schéma de l'algorithme 150
3.3.2.3. Evaluation du coût de l'algorithme 153
3.3.3. Tri par lathode des bulles 154
3.3.3.1. Principe 154
3.3.3.2. Schéma de l'algorithme 157
3.3.3.3. Evaluation du coût de l'algorithme 158
3.3.3.4. Optimisation de l'algorithme 158
3.3.3.5. Schéma de l'algorithme optimisé 160
3.3.3.6. Evaluation du coût de l'algorithme 161
3.3.4. Autre algorithme de tri utilisant des permutations: premier tri par insertion 162
3.3.4.1. Principe 162
3.3.4.2. Schéma de l'algorithme 164
3.3.4.3. Evaluation du coût de l'algorithme 164
3.3.5. Algorithme de tri par comptage 166
3.3.5.1. Principe 166
3.3.5.2. Schéma de l'algorithme 168
3.3.5.3. Evaluation de l'algorithme 169
3.4. Algorithmes de mise à jour d'un vecteur 170
3.4.1. Algorithme d'insertion d'un élément dans un vecteur non trié 170
3.3.1.1. Pas de critère d'insertion 170
3.4.1.2. Avec critère d'insertion 170
3.4.2. Algorithme d'insertion d'un élément dans un vecteur trié 171
3.4.2.1. Principe 171
3.4.2.2. Schéma de l'algorithme 171
3.4.2.3. Algorithme de tri par insertion (deuxième version) 176
3.4.3. Suppression d'un ément dans un vecteur tr 177
3.4.4. Algorithme de retassement d'un vecteur comportant un certain nombre de valeurs non significatives 181
3.5. Algorithme de tri par segmentation (Quicksort) 183
3.5.1. Principe 183
3.5.2. Ecriture de la produre trisegmentation 183
3.5.3. Ecriture de la produre segmentation 184
3.5.3.1. Premre version de l'algorithme de segmentation 186
3.5.3.2. Deuxième version de l'algorithme de segmentation 187
3.5.3.3. Evaluation 188
3.5.4. Evaluation de l'algorithme de tri par segmentation 188
3.5.4. Evaluation de l'algorithme de tri par segmentation 188
3.6. Algorithme du drapeau tricolore 191
3.6.1. Principe 191
3.6.2. Première version de l'algorithme 193
3.6.3. Deuxième version de l'algorithme 194
3.7. Conclusion: Traitement des listes liaires, représentation des vecteurs 195
4. SOLUTION D'UNE PARTIE DES EXERCICES 197
4.1. Solution d'une partie des exercices proposés au chapitre 1 197
4.1.1. Exercice 1 197
4.1.2. Exercice 2 197
4.1.3. Exercice 3 198
4.1.4. Exercice 4 199
4.1.5. Exercice 5 199
4.1.6. Exercice 6 200
4.1.7. Exercice 7 200
4.1.8. Exercice 8 202
4.1.9. Exercice 10 202
4.1.10. Exercice Il 204
4.1.11. Exercice 12 204
4.1.12. Exercice 14 205
4.1.13. Exercice 15 205
4.1.14. Exercice 16 206
4.1.15. Exercice 17 207
4.2. Solution d'une partie des exercices proposés au chapitre 2 208
4.2.1. Exercice 1 208
4.2.2. Exercice 2 210
4.2.3. Exercice 3 216
4.2.4. Exercice 4 220
4.2.5. Exercice 5 222
4.2.6. Exercice 6 222
4.2.7. Exercice 9 224
4.2.8. Exercice 13 226
4.2.9. Exercice 16 229
4.2.10. Exercice 22 233
4.2.11. Exercice 24 236
4.2.12. Exercice 35 241
4.2.13. Exercice 36 243
4.2.14. Exercice 40 245
4.2.15. Exercice 44 246
4.2.16. Exercice 48 249
4.2.17. Exercice 50 253
4.2.18. Exercice 51 258
4.3. Solution des exercices proposés au chapitre 3 260
4.3.1. Exercice 1 260
4.3.2. Exercice 2 262
4.3.3. Exercice 3 263
4.3.4. Exercice 4 265
4.3.5. Exercice 5 270
4.3.6. Exercice 6 271
4.3.7. Exercice 7 272
4.3.8. Exercice 8 274
4.3.9. Exercice 9 277
4.3.10. Exercice 10 280
4.3.11. Exercice 11 283
BIBLIOGRAPHIE 285
ANNEXE: Les primitives étendues 289
TOP
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !