
Structures de données et algorithmes très simples en Python
Description
Introduction au livre
Les structures de données et les algorithmes relèvent principalement du bon sens.
Si on supprime les explications qui prétendent être difficiles, tout le monde peut comprendre !
Les structures de données et les algorithmes sont expliqués en faisant appel au bon sens plutôt qu'à des concepts mathématiques.
Il explique pourquoi des structures comme les tableaux, les listes, les tables de hachage, les arbres et les graphes sont importantes, et quels algorithmes sont plus rapides dans quelles situations, en utilisant des normes qui peuvent être appliquées directement dans la pratique et lors des entretiens.
La notation Big O est également expliquée de manière facile à comprendre, et ce faisant, elle fournit des connaissances très utiles pour garantir l'évolutivité et la vitesse requises dans les environnements pratiques.
Si on supprime les explications qui prétendent être difficiles, tout le monde peut comprendre !
Les structures de données et les algorithmes sont expliqués en faisant appel au bon sens plutôt qu'à des concepts mathématiques.
Il explique pourquoi des structures comme les tableaux, les listes, les tables de hachage, les arbres et les graphes sont importantes, et quels algorithmes sont plus rapides dans quelles situations, en utilisant des normes qui peuvent être appliquées directement dans la pratique et lors des entretiens.
La notation Big O est également expliquée de manière facile à comprendre, et ce faisant, elle fournit des connaissances très utiles pour garantir l'évolutivité et la vitesse requises dans les environnements pratiques.
- Vous pouvez consulter un aperçu du contenu du livre.
Aperçu
indice
Chapitre 1 : Pourquoi les structures de données sont importantes
1.1 Structure des données 2
1.2 Tableaux : Structures de données de base 3
1.3 Mesure de vitesse 5
1.4 Lecture 6
1.5 Recherche 9
1.6 Insérer 11
1.7 Supprimer 14
1.8 Ensembles : L’impact d’une seule règle sur l’efficacité 15
1.9 Final 19
1.10 Exercice 19
Chapitre 2 : Pourquoi les algorithmes sont importants 21
2.1 Tableaux ordonnés 22
2.2 Recherche dans un tableau ordonné 25
2.3 Recherche binaire 27
2.4 Recherche binaire vs. Recherche linéaire 31
2.5 Finir 34
2.6 Exercice 34
Chapitre 3 Notation grand O 35
3.1 Notation Big O : Combien d’étapes un algorithme nécessite-t-il lorsqu’il y a N éléments de données ? 36
3.2 L'essence du grand O 37
3.3 Le troisième type d'algorithme 40
3,4 log 42
3.5 Découvrir O(log N) 43
3.6 Exemple concret 44
3.7 Finale 46
3.8 Exercice 46
Chapitre 4 : Accélération du code Big O 49
4.1 Tri à bulles 49
4.2 Utilisations pratiques du tri à bulles 51
4.3 Efficacité du tri à bulles 58
4.4 Problème quadratique 60
4.5 Solution linéaire 62
4.6 Arrivée 65
4.7 Exercice 65
Chapitre 5 Optimisation avec et sans notation Big O 67
5.1 Tri par sélection 67
5.2 Applications pratiques du tri par sélection 68
5.3 Efficacité du tri par sélection 75
5.4 Négliger les constantes 76
5.5 Big O Catégorie 78
5.6 Arrivée 81
5.7 Exercice 82
Chapitre 6 Optimisation pour les scénarios optimistes 85
6.1 Tri par insertion 85
6.2 Applications pratiques du tri par insertion 87
6.3 Efficacité du tri par insertion 94
6,4 Cas moyen 96
6.5 Exemple concret 98
6.6 Conclusion 101
6.7 Exercice 101
Chapitre 7 Les grands O dans le code quotidien 103
7.1 Même moyenne 104
7.2 Générateur de mots 105
7.3 Exemple de tableau 107
7.4 Température moyenne 108 degrés Celsius
7.5 Marques de vêtements 109
7.6 Compter le nombre de 1 : 110
7.7 Vérificateur de palindromes 111
7.8 Recherche de tous les produits 112
7.9 Gestion de plusieurs ensembles de données 114
7.10 Craqueur de mots de passe 115
7.11 Finale 118
7.12 Exercice 118
Chapitre 8 : Recherches ultra-rapides à l’aide de tables de hachage 123
8.1 Table de hachage 124
8.2 Hachage avec une fonction de hachage 125
8.3 Créer un thésaurus pour le plaisir et le profit, surtout le profit 126
8.4 Recherche dans une table de hachage 128
8.5 Gestion des collisions 130
8.6 Construction d'une table de hachage efficace 133
8.7 Tables de hachage pour l'organisation des données 135
8.8 Tables de hachage pour l'amélioration de la vitesse 137
8,9 Arrivée 142
8.10 Exercice 142
Chapitre 9 : Écrire du code concis avec des piles et des files d’attente 145
9.1 Pile 145
9.2 Types de données abstraits 148
9.3 Utilisation pratique des piles 150
9.4 Implémentation du code : Analyseur de code basé sur la pile 153
9.5 L'importance des structures de données contraintes 156
9,6 Q 157
9.7 Utilisation pratique des files d'attente 159
9,8 Arrivée 161
9.9 Exercice 161
Chapitre 10 Itération récursive Utilisation de la récursivité 163
10.1 Récursivité au lieu de boucles 163
10.2 Conditions de base 165
10.3 Lecture de code récursif 166
10.4 La récursivité vue par un ordinateur 169
10.5 Parcours du système de fichiers 172
10.6 Arrivée 174
10.7 Exercice 174
Chapitre 11 : Écrire de manière récursive 177
11.1 Catégorie récursive : Exécution répétée 177
11.2 Catégories récursives : Calcul 182
11.3 Récursivité descendante : une nouvelle façon de penser 185
11.4 Problème d'escalier 191
11.5 Création d'anagrammes 195
11,6 Arrivée 199
11.7 Exercice 200
Chapitre 12 Programmation dynamique 203
12.1 Appels récursifs inutiles 203
12.2 Petites améliorations pour Big O 207
12.3 Efficacité de la récursivité 208
12.4 Sous-problème dupliqué 209
12.5 Programmation dynamique avec mémoïsation 211
12.6 Programmation dynamique par une approche ascendante 214
12,7 Arrivée 217
12.8 Exercice 217
Chapitre 13 : Accélération des algorithmes récursifs 219
13.1 Split 220
13.2 Tri rapide 225
13.3 Efficacité du tri rapide 232
13.4 Scénario le plus défavorable pour le tri rapide 237
13.5 Sélection rapide 238
13.6 Le tri, au cœur des autres algorithmes 242
13,7 Arrivée 244
13.8 Exercice 244
Chapitre 14 Structures de données à base de nœuds 247
14.1 Listes chaînées 247
14.2 Implémentation d'une liste chaînée 249
14.3 Lecture 251
14.4 Recherche 254
14.5 Insérer 255
14.6 Supprimer 259
14.7 Efficacité des opérations sur les listes chaînées 262
14.8 Utilisations pratiques des listes chaînées 262
14.9 Listes doublement chaînées 263
14.10 Files d'attente à base de listes doublement chaînées 266
14.11 Finale 268
14.12 Exercice 268
Chapitre 15 : Accélération grâce aux arbres binaires de recherche 271
15.1 Arbre 272
15.2 Arbres binaires de recherche 274
15.3 Recherche 275
15.4 Insérer 280
15.5 Supprimer 285
15.6 Utilisations pratiques des arbres binaires de recherche 296
15.7 Parcours d'arbres binaires de recherche 296
15,8 Arrivée 301
15.9 Exercice 301
Chapitre 16 : Gestion des priorités avec les tas 303
16.1 File d'attente prioritaire 303
16.2 Tas 305
16.3 Propriétés du tas 308
16.4 Insertion dans le tas 309
16.5 Trouver le dernier nœud 311
16.6 Suppression du tas 312
16.7 Tas vs. Tableaux ordonnés 316
16.8 Retour sur le problème du dernier nœud 317
16.9 Implémentation d'un tas avec des tableaux 319
16.10 Files d'attente prioritaires implémentées avec des tas 326
16.11 Finale 326
16.12 Exercice 327
Chapitre 17 : Il n'y a pas de mal à savoir. Essayez 329.
17.1 Essai 330
17.2 Sauvegarde des mots 332
17.3 Essai de recherche 335
17.4 Efficacité de la recherche dans un trie 339
17.5 Essayez d'insérer 339
17.6 Développement d'une fonction de saisie automatique 344
17.7 Finalisation de la fonction de saisie automatique 350
Essayez avec les valeurs 17,8 : Saisie semi-automatique améliorée 350
17,9 Arrivée 352
17.10 Exercice 352
Chapitre 18 : Tout relier en un seul graphique 355
18.1 Graphique 356
18.2 Graphes orientés 358
18.3 Implémentation de graphes orientés objet 359
18.4 Navigation graphique 361
18.5 Recherche en profondeur 363
18.6 Recherche en largeur 373
18.7 Efficacité de la recherche dans les graphes 386
Graphique pondéré 18,8 389
18.9 Algorithme de Dijkstra 393
18.10 Arrivée 410
18.11 Exercice 411
Chapitre 19 : Gestion des contraintes d’espace 415
19.1 La complexité spatiale en notation O 415
19.2 Compromis entre temps et espace 418
19.3 Le coût caché de la récursivité 421
19,4 Arrivée 423
19.5 Exercice 424
Chapitre 20 Techniques d'optimisation du code 427
20.1 Prérequis : Comprendre la notation Big O actuelle 427
20.2 Pour commencer : Le plus grand O que vous puissiez imaginer 428
20,3 Vues magiques 429
20.4 Reconnaissance de formes 437
20.5 Algorithme glouton 445
20.6 Modification des structures de données 457
20.7 Arrivée 464
20.8 Adieu 464
20.9 Exercice 465
Annexe A Solutions des exercices 469
Recherche 505
1.1 Structure des données 2
1.2 Tableaux : Structures de données de base 3
1.3 Mesure de vitesse 5
1.4 Lecture 6
1.5 Recherche 9
1.6 Insérer 11
1.7 Supprimer 14
1.8 Ensembles : L’impact d’une seule règle sur l’efficacité 15
1.9 Final 19
1.10 Exercice 19
Chapitre 2 : Pourquoi les algorithmes sont importants 21
2.1 Tableaux ordonnés 22
2.2 Recherche dans un tableau ordonné 25
2.3 Recherche binaire 27
2.4 Recherche binaire vs. Recherche linéaire 31
2.5 Finir 34
2.6 Exercice 34
Chapitre 3 Notation grand O 35
3.1 Notation Big O : Combien d’étapes un algorithme nécessite-t-il lorsqu’il y a N éléments de données ? 36
3.2 L'essence du grand O 37
3.3 Le troisième type d'algorithme 40
3,4 log 42
3.5 Découvrir O(log N) 43
3.6 Exemple concret 44
3.7 Finale 46
3.8 Exercice 46
Chapitre 4 : Accélération du code Big O 49
4.1 Tri à bulles 49
4.2 Utilisations pratiques du tri à bulles 51
4.3 Efficacité du tri à bulles 58
4.4 Problème quadratique 60
4.5 Solution linéaire 62
4.6 Arrivée 65
4.7 Exercice 65
Chapitre 5 Optimisation avec et sans notation Big O 67
5.1 Tri par sélection 67
5.2 Applications pratiques du tri par sélection 68
5.3 Efficacité du tri par sélection 75
5.4 Négliger les constantes 76
5.5 Big O Catégorie 78
5.6 Arrivée 81
5.7 Exercice 82
Chapitre 6 Optimisation pour les scénarios optimistes 85
6.1 Tri par insertion 85
6.2 Applications pratiques du tri par insertion 87
6.3 Efficacité du tri par insertion 94
6,4 Cas moyen 96
6.5 Exemple concret 98
6.6 Conclusion 101
6.7 Exercice 101
Chapitre 7 Les grands O dans le code quotidien 103
7.1 Même moyenne 104
7.2 Générateur de mots 105
7.3 Exemple de tableau 107
7.4 Température moyenne 108 degrés Celsius
7.5 Marques de vêtements 109
7.6 Compter le nombre de 1 : 110
7.7 Vérificateur de palindromes 111
7.8 Recherche de tous les produits 112
7.9 Gestion de plusieurs ensembles de données 114
7.10 Craqueur de mots de passe 115
7.11 Finale 118
7.12 Exercice 118
Chapitre 8 : Recherches ultra-rapides à l’aide de tables de hachage 123
8.1 Table de hachage 124
8.2 Hachage avec une fonction de hachage 125
8.3 Créer un thésaurus pour le plaisir et le profit, surtout le profit 126
8.4 Recherche dans une table de hachage 128
8.5 Gestion des collisions 130
8.6 Construction d'une table de hachage efficace 133
8.7 Tables de hachage pour l'organisation des données 135
8.8 Tables de hachage pour l'amélioration de la vitesse 137
8,9 Arrivée 142
8.10 Exercice 142
Chapitre 9 : Écrire du code concis avec des piles et des files d’attente 145
9.1 Pile 145
9.2 Types de données abstraits 148
9.3 Utilisation pratique des piles 150
9.4 Implémentation du code : Analyseur de code basé sur la pile 153
9.5 L'importance des structures de données contraintes 156
9,6 Q 157
9.7 Utilisation pratique des files d'attente 159
9,8 Arrivée 161
9.9 Exercice 161
Chapitre 10 Itération récursive Utilisation de la récursivité 163
10.1 Récursivité au lieu de boucles 163
10.2 Conditions de base 165
10.3 Lecture de code récursif 166
10.4 La récursivité vue par un ordinateur 169
10.5 Parcours du système de fichiers 172
10.6 Arrivée 174
10.7 Exercice 174
Chapitre 11 : Écrire de manière récursive 177
11.1 Catégorie récursive : Exécution répétée 177
11.2 Catégories récursives : Calcul 182
11.3 Récursivité descendante : une nouvelle façon de penser 185
11.4 Problème d'escalier 191
11.5 Création d'anagrammes 195
11,6 Arrivée 199
11.7 Exercice 200
Chapitre 12 Programmation dynamique 203
12.1 Appels récursifs inutiles 203
12.2 Petites améliorations pour Big O 207
12.3 Efficacité de la récursivité 208
12.4 Sous-problème dupliqué 209
12.5 Programmation dynamique avec mémoïsation 211
12.6 Programmation dynamique par une approche ascendante 214
12,7 Arrivée 217
12.8 Exercice 217
Chapitre 13 : Accélération des algorithmes récursifs 219
13.1 Split 220
13.2 Tri rapide 225
13.3 Efficacité du tri rapide 232
13.4 Scénario le plus défavorable pour le tri rapide 237
13.5 Sélection rapide 238
13.6 Le tri, au cœur des autres algorithmes 242
13,7 Arrivée 244
13.8 Exercice 244
Chapitre 14 Structures de données à base de nœuds 247
14.1 Listes chaînées 247
14.2 Implémentation d'une liste chaînée 249
14.3 Lecture 251
14.4 Recherche 254
14.5 Insérer 255
14.6 Supprimer 259
14.7 Efficacité des opérations sur les listes chaînées 262
14.8 Utilisations pratiques des listes chaînées 262
14.9 Listes doublement chaînées 263
14.10 Files d'attente à base de listes doublement chaînées 266
14.11 Finale 268
14.12 Exercice 268
Chapitre 15 : Accélération grâce aux arbres binaires de recherche 271
15.1 Arbre 272
15.2 Arbres binaires de recherche 274
15.3 Recherche 275
15.4 Insérer 280
15.5 Supprimer 285
15.6 Utilisations pratiques des arbres binaires de recherche 296
15.7 Parcours d'arbres binaires de recherche 296
15,8 Arrivée 301
15.9 Exercice 301
Chapitre 16 : Gestion des priorités avec les tas 303
16.1 File d'attente prioritaire 303
16.2 Tas 305
16.3 Propriétés du tas 308
16.4 Insertion dans le tas 309
16.5 Trouver le dernier nœud 311
16.6 Suppression du tas 312
16.7 Tas vs. Tableaux ordonnés 316
16.8 Retour sur le problème du dernier nœud 317
16.9 Implémentation d'un tas avec des tableaux 319
16.10 Files d'attente prioritaires implémentées avec des tas 326
16.11 Finale 326
16.12 Exercice 327
Chapitre 17 : Il n'y a pas de mal à savoir. Essayez 329.
17.1 Essai 330
17.2 Sauvegarde des mots 332
17.3 Essai de recherche 335
17.4 Efficacité de la recherche dans un trie 339
17.5 Essayez d'insérer 339
17.6 Développement d'une fonction de saisie automatique 344
17.7 Finalisation de la fonction de saisie automatique 350
Essayez avec les valeurs 17,8 : Saisie semi-automatique améliorée 350
17,9 Arrivée 352
17.10 Exercice 352
Chapitre 18 : Tout relier en un seul graphique 355
18.1 Graphique 356
18.2 Graphes orientés 358
18.3 Implémentation de graphes orientés objet 359
18.4 Navigation graphique 361
18.5 Recherche en profondeur 363
18.6 Recherche en largeur 373
18.7 Efficacité de la recherche dans les graphes 386
Graphique pondéré 18,8 389
18.9 Algorithme de Dijkstra 393
18.10 Arrivée 410
18.11 Exercice 411
Chapitre 19 : Gestion des contraintes d’espace 415
19.1 La complexité spatiale en notation O 415
19.2 Compromis entre temps et espace 418
19.3 Le coût caché de la récursivité 421
19,4 Arrivée 423
19.5 Exercice 424
Chapitre 20 Techniques d'optimisation du code 427
20.1 Prérequis : Comprendre la notation Big O actuelle 427
20.2 Pour commencer : Le plus grand O que vous puissiez imaginer 428
20,3 Vues magiques 429
20.4 Reconnaissance de formes 437
20.5 Algorithme glouton 445
20.6 Modification des structures de données 457
20.7 Arrivée 464
20.8 Adieu 464
20.9 Exercice 465
Annexe A Solutions des exercices 469
Recherche 505
Image détaillée

Avis de l'éditeur
Ce n'est pas l'algorithme qui est difficile, c'est l'explication.
Les ouvrages expliquant les structures de données et les algorithmes contiennent souvent des termes techniques et des concepts mathématiques répétitifs, ce qui les rend difficiles à appréhender pour les non-spécialistes ou les débutants.
Cependant, la plupart des structures de données et des algorithmes peuvent être compris grâce au bon sens.
La notation mathématique n'est qu'un langage, et tout ce qui est traité en mathématiques peut être expliqué par le bon sens.
À présent, comprenons les structures de données et les algorithmes simplement, grâce à des explications claires et proches du langage courant.
La compréhension commence par les mots, l'apprentissage commence du bout des doigts.
Une autre raison pour laquelle les structures de données et les algorithmes sont difficiles à apprendre réside dans les explications axées sur la théorie.
Nous avons tous déjà vécu cette situation : croire avoir lu et compris quelque chose, pour finalement se retrouver incapables de coder.
La compréhension conceptuelle à elle seule ne suffit pas ; le véritable apprentissage provient de l'apprentissage par la pratique, en écrivant du code.
Ne soyez pas paresseux et familiarisez-vous avec le monde réel en écrivant du code ligne par ligne.
Un ouvrage d'introduction destiné aux non-spécialistes, mais également utile aux demandeurs d'emploi.
Lors d'un entretien d'embauche, il ne s'agit pas seulement de trouver la bonne réponse.
Vous devriez être capable d'expliquer pourquoi vous avez utilisé cette structure de données, quelle est sa complexité temporelle et pourquoi la structure de données que vous avez choisie est plus efficace que d'autres approches.
Grâce à des exemples pratiques et concrets comme les logiciels de craquage de mots de passe, la recherche d'amis sur les réseaux sociaux, la recherche de billets d'avion les moins chers et les logiciels de bibliothèque, vous pouvez vous exercer à choisir des structures de données pour maximiser l'efficacité et à améliorer les algorithmes existants pour optimiser les performances.
Ce que ce livre couvre
Pourquoi les structures de données et les algorithmes sont importants
○ Comprendre l'efficacité des algorithmes à l'aide de la notation Big O
○ Structures de données qui améliorent l'efficacité du code
Algorithmes récursifs pour un code élégant
Structures de données à base de nœuds offrant des performances exceptionnelles
○Complexité spatiale pour déterminer l'efficacité de la mémoire
○Quelques techniques d'optimisation de code
Public cible
○Étudiants universitaires qui ont du mal à lire les algorithmes
○Les recruteurs qui sont occupés à préparer leurs entretiens d'embauche
○Un praticien capable de coder mais dépourvu de connaissances en algorithmique
Les ouvrages expliquant les structures de données et les algorithmes contiennent souvent des termes techniques et des concepts mathématiques répétitifs, ce qui les rend difficiles à appréhender pour les non-spécialistes ou les débutants.
Cependant, la plupart des structures de données et des algorithmes peuvent être compris grâce au bon sens.
La notation mathématique n'est qu'un langage, et tout ce qui est traité en mathématiques peut être expliqué par le bon sens.
À présent, comprenons les structures de données et les algorithmes simplement, grâce à des explications claires et proches du langage courant.
La compréhension commence par les mots, l'apprentissage commence du bout des doigts.
Une autre raison pour laquelle les structures de données et les algorithmes sont difficiles à apprendre réside dans les explications axées sur la théorie.
Nous avons tous déjà vécu cette situation : croire avoir lu et compris quelque chose, pour finalement se retrouver incapables de coder.
La compréhension conceptuelle à elle seule ne suffit pas ; le véritable apprentissage provient de l'apprentissage par la pratique, en écrivant du code.
Ne soyez pas paresseux et familiarisez-vous avec le monde réel en écrivant du code ligne par ligne.
Un ouvrage d'introduction destiné aux non-spécialistes, mais également utile aux demandeurs d'emploi.
Lors d'un entretien d'embauche, il ne s'agit pas seulement de trouver la bonne réponse.
Vous devriez être capable d'expliquer pourquoi vous avez utilisé cette structure de données, quelle est sa complexité temporelle et pourquoi la structure de données que vous avez choisie est plus efficace que d'autres approches.
Grâce à des exemples pratiques et concrets comme les logiciels de craquage de mots de passe, la recherche d'amis sur les réseaux sociaux, la recherche de billets d'avion les moins chers et les logiciels de bibliothèque, vous pouvez vous exercer à choisir des structures de données pour maximiser l'efficacité et à améliorer les algorithmes existants pour optimiser les performances.
Ce que ce livre couvre
Pourquoi les structures de données et les algorithmes sont importants
○ Comprendre l'efficacité des algorithmes à l'aide de la notation Big O
○ Structures de données qui améliorent l'efficacité du code
Algorithmes récursifs pour un code élégant
Structures de données à base de nœuds offrant des performances exceptionnelles
○Complexité spatiale pour déterminer l'efficacité de la mémoire
○Quelques techniques d'optimisation de code
Public cible
○Étudiants universitaires qui ont du mal à lire les algorithmes
○Les recruteurs qui sont occupés à préparer leurs entretiens d'embauche
○Un praticien capable de coder mais dépourvu de connaissances en algorithmique
SPÉCIFICATIONS DES PRODUITS
- Date d'émission : 21 juillet 2025
Nombre de pages, poids, dimensions : 536 pages | 1 014 g | 188 × 240 × 26 mm
- ISBN13 : 9788966264803
Vous aimerez peut-être aussi
카테고리
Langue coréenne
Langue coréenne