
Il s'agit d'une structure de données et d'un algorithme en langage C.
Description
Introduction au livre
Des concepts à la pratique des structures de données et des algorithmes
Apprenons avec plaisir et sans abandonner !
Les structures de données et les algorithmes sont des compétences essentielles pour réussir les entretiens d'embauche et les tests de programmation dans les entreprises informatiques.
L'apprentissage des algorithmes vous aidera non seulement à trouver un emploi, mais aussi à devenir un meilleur développeur.
Cependant, les structures de données et les algorithmes sont difficiles à apprendre et ne sont même pas amusants, si bien que de nombreux développeurs abandonnent leur apprentissage à mi-chemin.
L'objectif de « Ceci est une structure de données + un algorithme » est d'inciter les lecteurs à lire jusqu'à la dernière page.
Il explique avec humour et à un niveau adapté aux débutants les structures de données et les concepts algorithmiques fréquemment utilisés, des listes au backtracking.
Nous avons minimisé les formules complexes qui vous laisseraient sans voix rien qu'en les regardant, et n'avons inclus que les formules essentielles à la compréhension.
De plus, nous avons fourni diverses illustrations pour vous aider à comprendre en un coup d'œil les principes de fonctionnement et 108 exemples de code source qui peuvent être exécutés et vérifiés immédiatement, afin que vous puissiez pleinement comprendre les grandes lignes de l'algorithme.
Apprenons les concepts clés des structures de données et des algorithmes sans abandonner avec « Ceci est une structure de données + un algorithme » !
Apprenons avec plaisir et sans abandonner !
Les structures de données et les algorithmes sont des compétences essentielles pour réussir les entretiens d'embauche et les tests de programmation dans les entreprises informatiques.
L'apprentissage des algorithmes vous aidera non seulement à trouver un emploi, mais aussi à devenir un meilleur développeur.
Cependant, les structures de données et les algorithmes sont difficiles à apprendre et ne sont même pas amusants, si bien que de nombreux développeurs abandonnent leur apprentissage à mi-chemin.
L'objectif de « Ceci est une structure de données + un algorithme » est d'inciter les lecteurs à lire jusqu'à la dernière page.
Il explique avec humour et à un niveau adapté aux débutants les structures de données et les concepts algorithmiques fréquemment utilisés, des listes au backtracking.
Nous avons minimisé les formules complexes qui vous laisseraient sans voix rien qu'en les regardant, et n'avons inclus que les formules essentielles à la compréhension.
De plus, nous avons fourni diverses illustrations pour vous aider à comprendre en un coup d'œil les principes de fonctionnement et 108 exemples de code source qui peuvent être exécutés et vérifiés immédiatement, afin que vous puissiez pleinement comprendre les grandes lignes de l'algorithme.
Apprenons les concepts clés des structures de données et des algorithmes sans abandonner avec « Ceci est une structure de données + un algorithme » !
- Vous pouvez consulter un aperçu du contenu du livre.
Aperçu
indice
Note de l'auteur
__La structure de ce livre
Feuille de route d'apprentissage
Chapitre 00 Structures de données et algorithmes utiles à connaître
structure de données _0.1
algorithme _0.2
_0.3 Comment gérer la mémoire en langage C
__0.3.1 Avis sur Pointer
__0.3.2 Examen de la structure
__0.3.3 Analyse de la disposition de la mémoire
__0.3.4 Comment gérer les données dans la pile
__0.3.5 Comment gérer les données dans le tas
Partie 01 Structures de données
Liste du chapitre 01
_1.1 Liste ADT
__1.1.1 Concept de liste
__1.1.2 Comparaison de listes et de tableaux
_1.2 Liste chaînée
1.2.1 Représentation nodale d'une liste chaînée
1.2.2 Opérations clés sur les listes chaînées
___Quiz sur les vitamines 1-1
__1.2.3 Exemple de programme de liste chaînée
1.2.4 Avantages et inconvénients des listes chaînées
___Quiz sur les vitamines 1-2
_1.3 Liste doublement chaînée
1.3.1 Opérations clés sur les listes doublement chaînées
__1.3.2 Exemple de programme de liste doublement chaînée
___Quiz sur les vitamines 1-3
_1.4 Liste chaînée circulaire
1.4.1 Opérations clés sur les listes doublement chaînées circulaires
__1.4.2 Exemple de programme de liste doublement chaînée circulaire
_Problèmes pratiques
Chapitre 02 Pile
_2.1 Type abstrait de données (TAD) de pile
__2.1.1 Concept de pile
Quiz sur les vitamines 2-1
2.1.2 Fonctions principales de la pile : opérations d’insertion et de suppression
_2.2 Pile implémentée sous forme de tableau
__2.2.1 Piles basées sur des tableaux et représentations nodales des piles
__2.2.2 Opérations de base sur les piles basées sur des tableaux
__2.2.3 Exemple de programme de pile basé sur un tableau
___Quiz sur les vitamines 2-2
_2.3 Pile implémentée avec une liste chaînée
2.3.1 Représentation de la pile par une liste chaînée et par un nœud
__2.3.2 Opérations de base des piles basées sur des listes chaînées
__2.3.3 Exemple de programme de pile basé sur une liste chaînée
2.4 Application de la pile : Calculatrice arithmétique
__2.4.1 Notation infixe et postfixe des formules
__2.4.2 Algorithme de calcul de la notation postfixée
__2.4.3 Algorithme de conversion de la notation infixe en notation postfixe
__2.4.4 Exemple de programme de calculatrice arithmétique
_Problèmes pratiques
Chapitre 03 File d'attente
_3.1 Type abstrait de données (TAD) de file d'attente
3.1.1 Concept de file d'attente
3.1.2 Caractéristiques principales du type abstrait de données File d'attente : opérations d'insertion et de suppression
_3.2 File d'attente circulaire
3.2.1 État vide et état de saturation
3.2.2 Opérations de base des files d'attente circulaires
__3.2.3 Exemple de programme de file d'attente circulaire
_3.3 File d'attente chaînée
3.3.1 Opérations de base sur les files chaînées
__3.3.2 Exemple de programme de file chaînée
_Problèmes pratiques
Chapitre 04 Arbre
_4.1 Type abstrait de données (TAD) Arbre
4.1.1 Concept d'arbre
4.1.2 Composantes d'un arbre
4.1.3 Méthode de représentation arborescente
4.1.4 Méthode de représentation des nœuds
4.1.5 Opérations de base sur les arbres
__4.1.6 Exemple de programme d'arbre
Quiz sur les vitamines 4-1
4.2 Arbre binaire
4.2.1 Types d'arbres binaires
4.2.2 Parcours d'un arbre binaire
4.2.3 Opérations de base sur les arbres binaires
__4.2.4 Exemple de programme d'arbre binaire
_4.3 Arbre de formules
4.3.1 Comment construire un arbre de formules
4.3.2 Implémentation de l'arbre de formules
__4.3.3 Exemple de programme d'arbre de formules
4.4 Ensembles séparés
4.4.1 Représentation d'ensembles disjoints
4.4.2 Opérations de base sur les ensembles disjoints
__4.4.3 Programme d'exemple d'ensemble séparé
_Problèmes pratiques
Partie 02 Algorithme
Chapitre 5 : Tri
5.1 Aperçu des algorithmes de tri
5.2 Tri à bulles
5.2.1 Mesure des performances du tri à bulles
__5.2.2.
Exemple de programme de tri à bulles
Quiz sur les vitamines 5-1
5.3 Tri par insertion
5.3.1 Mesure des performances du tri par insertion
__5.3.2 Exemple de programme de tri par insertion
_5.4 Tri rapide
5.4.1 Deux points à régler avant d'utiliser le tri rapide
__5.4.2 Exemple de programme de tri rapide
5.4.3 Mesure des performances du tri rapide
_5.5 Fonction de tri rapide dans la bibliothèque standard du langage C : qsort()
__5.5.1 Programme d'exemple de la fonction qsort()
___Quiz sur les vitamines 5-2
__5.5.2 Problèmes d'application de qsort()
_Problèmes pratiques
Chapitre 6 Exploration
6.1 Aperçu de l'algorithme de recherche
_6.2 Recherche séquentielle
6.2.1 Méthode de déplacement vers l'avant
Quiz sur les vitamines 6-1
6.2.2 Méthode de transposition
___Quiz sur les vitamines 6-2
6.2.3 Méthode de comptage
___Quiz sur les vitamines 6-3
_6.3 Recherche binaire
6.3.1 Mesure des performances de la recherche binaire
6.3.2 Mise en œuvre de la recherche binaire
6.3.3 Exemple de programme de recherche binaire : deuxième problème d’examen final
__6.3.4 Fonction de recherche binaire dans la bibliothèque standard du langage C : bsearch()
__6.3.5 Programme d'exemple de la fonction bsearch()
6.4 Arbre de recherche binaire
__6.4.1 Représentation par arbre de recherche binaire
6.4.2 Opérations de base sur les arbres binaires de recherche
__6.4.3 Exemple de programme d'arbre binaire de recherche
6.4.4 Problèmes liés aux arbres binaires de recherche
_6.5 Arbre rouge et noir
6.5.1 Règles d'implémentation pour les arbres rouge-noir
6.5.2 Opérations de base des arbres rouge-noir
__6.5.3 Exemple de programme d'arbre rouge-noir
_Problèmes pratiques
Chapitre 7 Files d'attente prioritaires et tas
_7.1 File d'attente prioritaire
7.1.1 Opérations d'insertion/suppression dans les files d'attente prioritaires
7.1.2 Implémentation d'une file d'attente prioritaire
_7.2 Tas
7.2.1 Opération d'insertion dans le tas
7.2.2 Opération de suppression de la valeur minimale du tas
7.2.3 Implémentation du tas
__7.2.4 Exemple de programme de tas
7.3 Implémentation d'une file de priorité basée sur un tas
_Problèmes pratiques
Chapitre 08 Table de hachage
8.1 Aperçu des tables de hachage
__8.1.1 Hachage
__8.1.2 Table de hachage
8.2 Fonction de hachage
8.2.1 Méthode de division
__8.2.2 Chiffres pliés
8.2.3 Limitations des fonctions de hachage : collisions
8.3 Techniques de résolution des conflits
8.3.1 Chaînage
8.3.2 Adressage ouvert
_Problèmes pratiques
Chapitre 9 Graphique
9.1 Aperçu du graphique
9.1.1 Contexte de la naissance des graphes : l’outil de résolution de problèmes d’Euler
9.1.2 Définition d'un graphique
Quiz sur les vitamines 9-1
_9.2 Méthodes de représentation graphique
9.2.1 Matrice d'adjacence
__9.2.2 Liste d'adjacence
___Quiz sur les vitamines 9-2
_9.3 Techniques de parcours de graphes
9.3.1 Recherche en profondeur
__9.3.2 Recherche en largeur
__9.3.3 Exemple de programme de parcours de graphe
_9.4 Tri topologique
9.4.1 Fonctionnement du tri topologique
__9.4.2 Exemple de programme de tri topologique
_9.5 Arbre couvrant minimal
__9.5.1 Algorithme de Prim
__9.5.2 Algorithme de Kruskal
__9.5.3 Exemple de programme d'arbre couvrant minimal
_9.6 Recherche du chemin le plus court : l’algorithme de Dijkstra
9.6.1 Concept de l'algorithme de Dijkstra
__9.6.2 Programme d'exemple de l'algorithme de Dijkstra
_Problèmes pratiques
Chapitre 10 Recherche de chaînes
_10.1 Aperçu des algorithmes de recherche de chaînes de caractères
_10.2 Algorithme de recherche classique
10.2.1 Fonctionnement de la recherche traditionnelle
__10.2.2 Exemple de programme pour un algorithme de recherche simple
_10.3 Algorithme de Karp-Rabin
10.3.1 Fonctionnement de l'algorithme de Karp-Rabin
__10.3.2 Exemple de programme de l'algorithme de Karp-Rabin
Algorithme KMP _10.4
10.4.1 Fonctionnement de l'algorithme KMP
__10.4.2 Méthode de précalcul des informations aux limites
__10.4.3 Exemple de programme d'algorithme KMP
_10.5 Algorithme de Boyer-Moore
__10.5.1 Mouvements de personnages incorrects
__10.5.2 Bon mouvement de suffixe
__10.5.3 Prétraitement de l'algorithme de Boyer-Moore
__10.5.4 Exemple de programme de l'algorithme de Boyer-Moore
_Problèmes pratiques
Partie 03 Techniques de conception d'algorithmes
Chapitre 11 Analyse des performances des algorithmes
11.1 Critères de mesure des performances de l'algorithme et temps d'exécution
__11.1.1 Critères de mesure des performances de l'algorithme
11.1.2 Analyse du temps d'exécution des algorithmes
_11.2 Notation asymptotique
__11.2.1 Notation O
__11.2.2 Notation Ω
__11.2.3 Notation Θ
11.3 Analyse des performances des algorithmes récursifs
__11.3.1 Équations récursives et algorithmes récursifs
11.3.2 Analyse des performances du tri rapide
__11.3.3 Nettoyage principal
_Problèmes pratiques
Chapitre 12 Diviser pour mieux régner
12.1 Aperçu de la technique « diviser pour régner »
12.1.1 Contexte de la naissance de la tactique « diviser pour régner » : la bataille d'Austerlitz
12.1.2 Concept d'algorithme de type diviser pour régner
_12.2 Tri fusion
12.2.1 Fonctionnement du tri fusion
12.2.2 Implémentation de l'algorithme de tri fusion
_12.3 Calcul des exposants
__12.3.1 Méthode de calcul par exponentiation
__12.3.2 Implémentation de l'algorithme d'exponentiation
12.4 Trouver les nombres de Fibonacci par la méthode « diviser pour régner »
12.4.1 Comment trouver les nombres de Fibonacci
12.4.2 Comment trouver les nombres de Fibonacci en utilisant la méthode « diviser pour régner »
__12.4.3 Implémentation de l'algorithme de recherche des nombres de Fibonacci basé sur la méthode « diviser pour régner »
Problèmes pratiques
Chapitre 13 Programmation dynamique
_13.1 Aperçu de la programmation dynamique
13.1.1 Contexte de la naissance de la programmation dynamique
13.1.2 Concept de programmation dynamique
13.2 Recherche des nombres de Fibonacci par programmation dynamique
13.2.1 Comment trouver les nombres de Fibonacci à l'aide de la programmation dynamique
13.2.2 Implémentation d'un algorithme de recherche des nombres de Fibonacci basé sur la programmation dynamique
_13.3 Plus longue sous-séquence commune
__13.3.1 Algorithme LCS
13.3.2 Implémentation de l'algorithme LCS basé sur la programmation dynamique
_Problèmes pratiques
Chapitre 14 Algorithme glouton
_14.1 Aperçu de l'algorithme glouton
_14.2 Problème de réduction du changement
__14.2.1 Exemple de programme pour calculer la monnaie
__14.2.2 Propriétés importantes de l'algorithme glouton
_14.3 Retour sur l'algorithme de Kruskal
_14.4 Retour sur l'algorithme de Dijkstra
Codage de Huffman _14.5
14.5.1 Codes de longueur fixe et codes de préfixe
__14.5.2 Construction d'un arbre de Huffman
14.5.3 Compression des données
14.5.4 Décompression des données
__14.5.5 Programme d'exemple de codage Huffman
_Problèmes pratiques
Chapitre 15 Retour en arrière
_15.1 Aperçu du retour arrière
15.1.1 Un cas de retour en arrière : l’histoire de Thésée
__15.1.2 Le concept de retour en arrière
15.2 Trouver la sortie du labyrinthe
__15.2.1 Retour arrière basé sur un appel récursif
__15.2.2 Implémentation de l'algorithme d'évasion du labyrinthe
__15.2.3 Exemple de programme d'algorithme d'évasion de labyrinthe
_15.3 Problème des huit reines
__15.3.1 L'espace marin créé par 8 reines et le retour en arrière
15.3.2 Implémentation d'un algorithme pour résoudre le problème des N reines
__15.3.3 Exemple de programme pour résoudre le problème des N reines
_Problèmes pratiques
__Trouver
__La structure de ce livre
Feuille de route d'apprentissage
Chapitre 00 Structures de données et algorithmes utiles à connaître
structure de données _0.1
algorithme _0.2
_0.3 Comment gérer la mémoire en langage C
__0.3.1 Avis sur Pointer
__0.3.2 Examen de la structure
__0.3.3 Analyse de la disposition de la mémoire
__0.3.4 Comment gérer les données dans la pile
__0.3.5 Comment gérer les données dans le tas
Partie 01 Structures de données
Liste du chapitre 01
_1.1 Liste ADT
__1.1.1 Concept de liste
__1.1.2 Comparaison de listes et de tableaux
_1.2 Liste chaînée
1.2.1 Représentation nodale d'une liste chaînée
1.2.2 Opérations clés sur les listes chaînées
___Quiz sur les vitamines 1-1
__1.2.3 Exemple de programme de liste chaînée
1.2.4 Avantages et inconvénients des listes chaînées
___Quiz sur les vitamines 1-2
_1.3 Liste doublement chaînée
1.3.1 Opérations clés sur les listes doublement chaînées
__1.3.2 Exemple de programme de liste doublement chaînée
___Quiz sur les vitamines 1-3
_1.4 Liste chaînée circulaire
1.4.1 Opérations clés sur les listes doublement chaînées circulaires
__1.4.2 Exemple de programme de liste doublement chaînée circulaire
_Problèmes pratiques
Chapitre 02 Pile
_2.1 Type abstrait de données (TAD) de pile
__2.1.1 Concept de pile
Quiz sur les vitamines 2-1
2.1.2 Fonctions principales de la pile : opérations d’insertion et de suppression
_2.2 Pile implémentée sous forme de tableau
__2.2.1 Piles basées sur des tableaux et représentations nodales des piles
__2.2.2 Opérations de base sur les piles basées sur des tableaux
__2.2.3 Exemple de programme de pile basé sur un tableau
___Quiz sur les vitamines 2-2
_2.3 Pile implémentée avec une liste chaînée
2.3.1 Représentation de la pile par une liste chaînée et par un nœud
__2.3.2 Opérations de base des piles basées sur des listes chaînées
__2.3.3 Exemple de programme de pile basé sur une liste chaînée
2.4 Application de la pile : Calculatrice arithmétique
__2.4.1 Notation infixe et postfixe des formules
__2.4.2 Algorithme de calcul de la notation postfixée
__2.4.3 Algorithme de conversion de la notation infixe en notation postfixe
__2.4.4 Exemple de programme de calculatrice arithmétique
_Problèmes pratiques
Chapitre 03 File d'attente
_3.1 Type abstrait de données (TAD) de file d'attente
3.1.1 Concept de file d'attente
3.1.2 Caractéristiques principales du type abstrait de données File d'attente : opérations d'insertion et de suppression
_3.2 File d'attente circulaire
3.2.1 État vide et état de saturation
3.2.2 Opérations de base des files d'attente circulaires
__3.2.3 Exemple de programme de file d'attente circulaire
_3.3 File d'attente chaînée
3.3.1 Opérations de base sur les files chaînées
__3.3.2 Exemple de programme de file chaînée
_Problèmes pratiques
Chapitre 04 Arbre
_4.1 Type abstrait de données (TAD) Arbre
4.1.1 Concept d'arbre
4.1.2 Composantes d'un arbre
4.1.3 Méthode de représentation arborescente
4.1.4 Méthode de représentation des nœuds
4.1.5 Opérations de base sur les arbres
__4.1.6 Exemple de programme d'arbre
Quiz sur les vitamines 4-1
4.2 Arbre binaire
4.2.1 Types d'arbres binaires
4.2.2 Parcours d'un arbre binaire
4.2.3 Opérations de base sur les arbres binaires
__4.2.4 Exemple de programme d'arbre binaire
_4.3 Arbre de formules
4.3.1 Comment construire un arbre de formules
4.3.2 Implémentation de l'arbre de formules
__4.3.3 Exemple de programme d'arbre de formules
4.4 Ensembles séparés
4.4.1 Représentation d'ensembles disjoints
4.4.2 Opérations de base sur les ensembles disjoints
__4.4.3 Programme d'exemple d'ensemble séparé
_Problèmes pratiques
Partie 02 Algorithme
Chapitre 5 : Tri
5.1 Aperçu des algorithmes de tri
5.2 Tri à bulles
5.2.1 Mesure des performances du tri à bulles
__5.2.2.
Exemple de programme de tri à bulles
Quiz sur les vitamines 5-1
5.3 Tri par insertion
5.3.1 Mesure des performances du tri par insertion
__5.3.2 Exemple de programme de tri par insertion
_5.4 Tri rapide
5.4.1 Deux points à régler avant d'utiliser le tri rapide
__5.4.2 Exemple de programme de tri rapide
5.4.3 Mesure des performances du tri rapide
_5.5 Fonction de tri rapide dans la bibliothèque standard du langage C : qsort()
__5.5.1 Programme d'exemple de la fonction qsort()
___Quiz sur les vitamines 5-2
__5.5.2 Problèmes d'application de qsort()
_Problèmes pratiques
Chapitre 6 Exploration
6.1 Aperçu de l'algorithme de recherche
_6.2 Recherche séquentielle
6.2.1 Méthode de déplacement vers l'avant
Quiz sur les vitamines 6-1
6.2.2 Méthode de transposition
___Quiz sur les vitamines 6-2
6.2.3 Méthode de comptage
___Quiz sur les vitamines 6-3
_6.3 Recherche binaire
6.3.1 Mesure des performances de la recherche binaire
6.3.2 Mise en œuvre de la recherche binaire
6.3.3 Exemple de programme de recherche binaire : deuxième problème d’examen final
__6.3.4 Fonction de recherche binaire dans la bibliothèque standard du langage C : bsearch()
__6.3.5 Programme d'exemple de la fonction bsearch()
6.4 Arbre de recherche binaire
__6.4.1 Représentation par arbre de recherche binaire
6.4.2 Opérations de base sur les arbres binaires de recherche
__6.4.3 Exemple de programme d'arbre binaire de recherche
6.4.4 Problèmes liés aux arbres binaires de recherche
_6.5 Arbre rouge et noir
6.5.1 Règles d'implémentation pour les arbres rouge-noir
6.5.2 Opérations de base des arbres rouge-noir
__6.5.3 Exemple de programme d'arbre rouge-noir
_Problèmes pratiques
Chapitre 7 Files d'attente prioritaires et tas
_7.1 File d'attente prioritaire
7.1.1 Opérations d'insertion/suppression dans les files d'attente prioritaires
7.1.2 Implémentation d'une file d'attente prioritaire
_7.2 Tas
7.2.1 Opération d'insertion dans le tas
7.2.2 Opération de suppression de la valeur minimale du tas
7.2.3 Implémentation du tas
__7.2.4 Exemple de programme de tas
7.3 Implémentation d'une file de priorité basée sur un tas
_Problèmes pratiques
Chapitre 08 Table de hachage
8.1 Aperçu des tables de hachage
__8.1.1 Hachage
__8.1.2 Table de hachage
8.2 Fonction de hachage
8.2.1 Méthode de division
__8.2.2 Chiffres pliés
8.2.3 Limitations des fonctions de hachage : collisions
8.3 Techniques de résolution des conflits
8.3.1 Chaînage
8.3.2 Adressage ouvert
_Problèmes pratiques
Chapitre 9 Graphique
9.1 Aperçu du graphique
9.1.1 Contexte de la naissance des graphes : l’outil de résolution de problèmes d’Euler
9.1.2 Définition d'un graphique
Quiz sur les vitamines 9-1
_9.2 Méthodes de représentation graphique
9.2.1 Matrice d'adjacence
__9.2.2 Liste d'adjacence
___Quiz sur les vitamines 9-2
_9.3 Techniques de parcours de graphes
9.3.1 Recherche en profondeur
__9.3.2 Recherche en largeur
__9.3.3 Exemple de programme de parcours de graphe
_9.4 Tri topologique
9.4.1 Fonctionnement du tri topologique
__9.4.2 Exemple de programme de tri topologique
_9.5 Arbre couvrant minimal
__9.5.1 Algorithme de Prim
__9.5.2 Algorithme de Kruskal
__9.5.3 Exemple de programme d'arbre couvrant minimal
_9.6 Recherche du chemin le plus court : l’algorithme de Dijkstra
9.6.1 Concept de l'algorithme de Dijkstra
__9.6.2 Programme d'exemple de l'algorithme de Dijkstra
_Problèmes pratiques
Chapitre 10 Recherche de chaînes
_10.1 Aperçu des algorithmes de recherche de chaînes de caractères
_10.2 Algorithme de recherche classique
10.2.1 Fonctionnement de la recherche traditionnelle
__10.2.2 Exemple de programme pour un algorithme de recherche simple
_10.3 Algorithme de Karp-Rabin
10.3.1 Fonctionnement de l'algorithme de Karp-Rabin
__10.3.2 Exemple de programme de l'algorithme de Karp-Rabin
Algorithme KMP _10.4
10.4.1 Fonctionnement de l'algorithme KMP
__10.4.2 Méthode de précalcul des informations aux limites
__10.4.3 Exemple de programme d'algorithme KMP
_10.5 Algorithme de Boyer-Moore
__10.5.1 Mouvements de personnages incorrects
__10.5.2 Bon mouvement de suffixe
__10.5.3 Prétraitement de l'algorithme de Boyer-Moore
__10.5.4 Exemple de programme de l'algorithme de Boyer-Moore
_Problèmes pratiques
Partie 03 Techniques de conception d'algorithmes
Chapitre 11 Analyse des performances des algorithmes
11.1 Critères de mesure des performances de l'algorithme et temps d'exécution
__11.1.1 Critères de mesure des performances de l'algorithme
11.1.2 Analyse du temps d'exécution des algorithmes
_11.2 Notation asymptotique
__11.2.1 Notation O
__11.2.2 Notation Ω
__11.2.3 Notation Θ
11.3 Analyse des performances des algorithmes récursifs
__11.3.1 Équations récursives et algorithmes récursifs
11.3.2 Analyse des performances du tri rapide
__11.3.3 Nettoyage principal
_Problèmes pratiques
Chapitre 12 Diviser pour mieux régner
12.1 Aperçu de la technique « diviser pour régner »
12.1.1 Contexte de la naissance de la tactique « diviser pour régner » : la bataille d'Austerlitz
12.1.2 Concept d'algorithme de type diviser pour régner
_12.2 Tri fusion
12.2.1 Fonctionnement du tri fusion
12.2.2 Implémentation de l'algorithme de tri fusion
_12.3 Calcul des exposants
__12.3.1 Méthode de calcul par exponentiation
__12.3.2 Implémentation de l'algorithme d'exponentiation
12.4 Trouver les nombres de Fibonacci par la méthode « diviser pour régner »
12.4.1 Comment trouver les nombres de Fibonacci
12.4.2 Comment trouver les nombres de Fibonacci en utilisant la méthode « diviser pour régner »
__12.4.3 Implémentation de l'algorithme de recherche des nombres de Fibonacci basé sur la méthode « diviser pour régner »
Problèmes pratiques
Chapitre 13 Programmation dynamique
_13.1 Aperçu de la programmation dynamique
13.1.1 Contexte de la naissance de la programmation dynamique
13.1.2 Concept de programmation dynamique
13.2 Recherche des nombres de Fibonacci par programmation dynamique
13.2.1 Comment trouver les nombres de Fibonacci à l'aide de la programmation dynamique
13.2.2 Implémentation d'un algorithme de recherche des nombres de Fibonacci basé sur la programmation dynamique
_13.3 Plus longue sous-séquence commune
__13.3.1 Algorithme LCS
13.3.2 Implémentation de l'algorithme LCS basé sur la programmation dynamique
_Problèmes pratiques
Chapitre 14 Algorithme glouton
_14.1 Aperçu de l'algorithme glouton
_14.2 Problème de réduction du changement
__14.2.1 Exemple de programme pour calculer la monnaie
__14.2.2 Propriétés importantes de l'algorithme glouton
_14.3 Retour sur l'algorithme de Kruskal
_14.4 Retour sur l'algorithme de Dijkstra
Codage de Huffman _14.5
14.5.1 Codes de longueur fixe et codes de préfixe
__14.5.2 Construction d'un arbre de Huffman
14.5.3 Compression des données
14.5.4 Décompression des données
__14.5.5 Programme d'exemple de codage Huffman
_Problèmes pratiques
Chapitre 15 Retour en arrière
_15.1 Aperçu du retour arrière
15.1.1 Un cas de retour en arrière : l’histoire de Thésée
__15.1.2 Le concept de retour en arrière
15.2 Trouver la sortie du labyrinthe
__15.2.1 Retour arrière basé sur un appel récursif
__15.2.2 Implémentation de l'algorithme d'évasion du labyrinthe
__15.2.3 Exemple de programme d'algorithme d'évasion de labyrinthe
_15.3 Problème des huit reines
__15.3.1 L'espace marin créé par 8 reines et le retour en arrière
15.3.2 Implémentation d'un algorithme pour résoudre le problème des N reines
__15.3.3 Exemple de programme pour résoudre le problème des N reines
_Problèmes pratiques
__Trouver
Image détaillée

Avis de l'éditeur
[ Quête principale : Devenir un meilleur développeur ]
Structures de données + algorithmes : le moyen ultime de progresser et de devenir un meilleur développeur !
L'apprentissage des structures de données et des algorithmes vous aidera grandement à devenir un bon développeur.
En fait, de nos jours, la bibliothèque standard fournit plusieurs algorithmes par défaut, de sorte que l'utilisation de la seule bibliothèque standard suffit pour créer un programme.
Mais aussi performant soit un outil, il est inutile s'il n'est pas adapté à la situation.
La bibliothèque standard est comme une boîte à outils pour les développeurs.
Un bon développeur doit savoir utiliser l'outil approprié à chaque situation.
Alors, comment choisir la structure de données et l'algorithme adaptés à chaque situation ? Il est indispensable de bien comprendre leur fonctionnement.
Comprendre comment les choses fonctionnent permet de passer moins de temps à expérimenter et à se demander « pourquoi pas ? » et plus de temps à créer de meilleurs programmes.
Même en cas de problèmes, l'algorithme peut être amélioré pour s'adapter à la situation.
Cependant, plus on en apprend sur les structures de données et les algorithmes, plus les formules deviennent complexes et plus le code s'allonge.
Pour les développeurs, les structures de données et les algorithmes sont comme des quêtes de raid.
Vous relevez sans cesse de nouveaux défis pour augmenter votre puissance de combat, mais terminer un niveau n'est jamais facile.
De même, pour devenir un meilleur développeur, il faut apprendre les structures de données et les algorithmes, mais les maîtriser complètement n'est jamais facile.
Les structures de données et les algorithmes sont peut-être le « boss final » des développeurs.
Si vous n'avez pas encore réussi à maîtriser pleinement les structures de données et les algorithmes, c'est probablement parce que vous n'avez pas encore rencontré l'ouvrage « This is Data Structures + Algorithms ».
Le plaisir est une excellente source de motivation pour continuer à apprendre.
De même que le fait d'avoir de bons compagnons vous permet de profiter de jeux (camping, randonnée, exercice physique, clubs de lecture, etc.), avoir de bons ouvrages de référence à portée de main vous permet de prendre plaisir à apprendre les structures de données et les algorithmes jusqu'au bout.
Alors, « This is Data Structures + Algorithms » est-il un ouvrage suffisamment pertinent pour être considéré comme un complément ? Je vais maintenant vous présenter les caractéristiques et le contenu de « This is Data Structures + Algorithms ».
● Caractéristiques de 『This is Data Structure + Algorithm』
》 Une histoire pleine d'esprit sur les concepts de structure de données et d'algorithmes !
Les formules complexes sont réduites au minimum et seules les formules nécessaires à la compréhension sont incluses !
》 Contient diverses illustrations pour vous aider à comprendre facilement les principes de fonctionnement !
》 Contient une variété de problèmes pratiques amusants, comme des quêtes, qui vous permettent de vérifier immédiatement ce que vous avez appris !
》 Fournit 108 exemples de sources qui vous permettent de tester immédiatement les algorithmes que vous avez appris !
》 Nous organisons un café de questions-réponses avec des auteurs sur les structures de données et les algorithmes !
● Contenu abordé dans 『This is Data Structure + Algorithm』
》 Quatre structures de données qui constituent la base des algorithmes et qui sont très utiles en elles-mêmes
→ Liste, pile, file d'attente, arbre
》 6 algorithmes pour améliorer vos compétences en programmation
→ Tri, recherche, files de priorité et tas, tables de hachage, graphes
》 Analyse des performances des algorithmes et quatre techniques de conception pour créer de meilleurs programmes
→ Analyse des performances des algorithmes, diviser pour régner, programmation dynamique, algorithme glouton, retour arrière
● Vous devriez lire « Ceci est une structure de données et un algorithme ».
Le langage C est parfait ! Mais j'ai entendu dire qu'il faut connaître les algorithmes pour trouver un emploi ?
→ Les demandeurs d'emploi qui souhaitent bien comprendre les concepts de base des structures de données et des algorithmes pour l'emploi, etc. !
Vos notes en génie informatique sont parfaites ! Mais que faire si vous souhaitez devenir un meilleur développeur ?
→ Un étudiant en génie informatique qui souhaite apprendre correctement les structures de données et les algorithmes !
Mes compétences pratiques sont presque parfaites ! Mais que faire si je veux vérifier les détails confus au fur et à mesure qu'ils apparaissent ?
→ Les développeurs qui ont besoin d'un ouvrage de référence sur les structures de données et les algorithmes auquel ils peuvent se référer à maintes reprises pendant le développement !
● Télécharger des exemples de fichiers
→ https://www.hanbit.co.kr/src/11003
Livres connexes
Auto-apprentissage du langage C (Hanbit Media, 2019)
« Voici le test de codage pour l’emploi » (Hanbit Media, 2020)
Structures de données + algorithmes : le moyen ultime de progresser et de devenir un meilleur développeur !
L'apprentissage des structures de données et des algorithmes vous aidera grandement à devenir un bon développeur.
En fait, de nos jours, la bibliothèque standard fournit plusieurs algorithmes par défaut, de sorte que l'utilisation de la seule bibliothèque standard suffit pour créer un programme.
Mais aussi performant soit un outil, il est inutile s'il n'est pas adapté à la situation.
La bibliothèque standard est comme une boîte à outils pour les développeurs.
Un bon développeur doit savoir utiliser l'outil approprié à chaque situation.
Alors, comment choisir la structure de données et l'algorithme adaptés à chaque situation ? Il est indispensable de bien comprendre leur fonctionnement.
Comprendre comment les choses fonctionnent permet de passer moins de temps à expérimenter et à se demander « pourquoi pas ? » et plus de temps à créer de meilleurs programmes.
Même en cas de problèmes, l'algorithme peut être amélioré pour s'adapter à la situation.
Cependant, plus on en apprend sur les structures de données et les algorithmes, plus les formules deviennent complexes et plus le code s'allonge.
Pour les développeurs, les structures de données et les algorithmes sont comme des quêtes de raid.
Vous relevez sans cesse de nouveaux défis pour augmenter votre puissance de combat, mais terminer un niveau n'est jamais facile.
De même, pour devenir un meilleur développeur, il faut apprendre les structures de données et les algorithmes, mais les maîtriser complètement n'est jamais facile.
Les structures de données et les algorithmes sont peut-être le « boss final » des développeurs.
Si vous n'avez pas encore réussi à maîtriser pleinement les structures de données et les algorithmes, c'est probablement parce que vous n'avez pas encore rencontré l'ouvrage « This is Data Structures + Algorithms ».
Le plaisir est une excellente source de motivation pour continuer à apprendre.
De même que le fait d'avoir de bons compagnons vous permet de profiter de jeux (camping, randonnée, exercice physique, clubs de lecture, etc.), avoir de bons ouvrages de référence à portée de main vous permet de prendre plaisir à apprendre les structures de données et les algorithmes jusqu'au bout.
Alors, « This is Data Structures + Algorithms » est-il un ouvrage suffisamment pertinent pour être considéré comme un complément ? Je vais maintenant vous présenter les caractéristiques et le contenu de « This is Data Structures + Algorithms ».
● Caractéristiques de 『This is Data Structure + Algorithm』
》 Une histoire pleine d'esprit sur les concepts de structure de données et d'algorithmes !
Les formules complexes sont réduites au minimum et seules les formules nécessaires à la compréhension sont incluses !
》 Contient diverses illustrations pour vous aider à comprendre facilement les principes de fonctionnement !
》 Contient une variété de problèmes pratiques amusants, comme des quêtes, qui vous permettent de vérifier immédiatement ce que vous avez appris !
》 Fournit 108 exemples de sources qui vous permettent de tester immédiatement les algorithmes que vous avez appris !
》 Nous organisons un café de questions-réponses avec des auteurs sur les structures de données et les algorithmes !
● Contenu abordé dans 『This is Data Structure + Algorithm』
》 Quatre structures de données qui constituent la base des algorithmes et qui sont très utiles en elles-mêmes
→ Liste, pile, file d'attente, arbre
》 6 algorithmes pour améliorer vos compétences en programmation
→ Tri, recherche, files de priorité et tas, tables de hachage, graphes
》 Analyse des performances des algorithmes et quatre techniques de conception pour créer de meilleurs programmes
→ Analyse des performances des algorithmes, diviser pour régner, programmation dynamique, algorithme glouton, retour arrière
● Vous devriez lire « Ceci est une structure de données et un algorithme ».
Le langage C est parfait ! Mais j'ai entendu dire qu'il faut connaître les algorithmes pour trouver un emploi ?
→ Les demandeurs d'emploi qui souhaitent bien comprendre les concepts de base des structures de données et des algorithmes pour l'emploi, etc. !
Vos notes en génie informatique sont parfaites ! Mais que faire si vous souhaitez devenir un meilleur développeur ?
→ Un étudiant en génie informatique qui souhaite apprendre correctement les structures de données et les algorithmes !
Mes compétences pratiques sont presque parfaites ! Mais que faire si je veux vérifier les détails confus au fur et à mesure qu'ils apparaissent ?
→ Les développeurs qui ont besoin d'un ouvrage de référence sur les structures de données et les algorithmes auquel ils peuvent se référer à maintes reprises pendant le développement !
● Télécharger des exemples de fichiers
→ https://www.hanbit.co.kr/src/11003
Livres connexes
Auto-apprentissage du langage C (Hanbit Media, 2019)
« Voici le test de codage pour l’emploi » (Hanbit Media, 2020)
SPÉCIFICATIONS DES PRODUITS
- Date de publication : 3 août 2022
Nombre de pages, poids, dimensions : 664 pages | 1 196 g | 183 × 235 × 30 mm
- ISBN13 : 9791169210034
- ISBN10 : 1169210031
Vous aimerez peut-être aussi
카테고리
Langue coréenne
Langue coréenne