Complexité algorithmique — 00 — Le code qui marche en dev et meurt en prod
Pourquoi un code rapide sur 100 lignes devient inutilisable sur 1 million. Introduction à la complexité algorithmique comme dette technique qui dort.
11 articles sur le thème "structures de données".
Pourquoi un code rapide sur 100 lignes devient inutilisable sur 1 million. Introduction à la complexité algorithmique comme dette technique qui dort.
Le trie ou arbre préfixe : stocker des mots par caractères partagés, recherche et autocomplétion en O(longueur du mot), et son compromis mémoire.
Pourquoi et comment équilibrer un arbre de recherche : rotations, arbres AVL et rouge-noir, et où on les rencontre (maps ordonnées, index de bases de données).
La pile (LIFO) et la file (FIFO) : principe, implémentation en TypeScript et Python, complexités, et usages réels (annuler/refaire, parcours, ordonnancement).
Une méthode pour choisir la structure de données adaptée à un problème réel : identifier l'opération chaude, puis sélectionner array, Set, Map ou structure triée.
Les listes chaînées : nœuds et pointeurs, insertion et suppression en O(1), simple vs double chaînage, et quand elles battent (ou non) le tableau dynamique.
Union-Find : tester si deux éléments sont dans le même groupe et fusionner des groupes en quasi-O(1). Compression de chemin, union par rang, et usages (Kruskal, connexité).
La file de priorité et son implémentation par tas binaire : insertion et extraction du min/max en O(log n), stockage dans un tableau, et usages (Dijkstra, top-k).
L'arbre binaire de recherche (BST) : invariant, insertion, recherche et parcours en ordre. Pourquoi il offre O(log n) en théorie mais peut dégénérer en O(n).
Array, liste chaînée, hashmap, Set, arbre équilibré : leurs coûts en Big-O pour l'accès, la recherche, l'insertion et la suppression, comparés dans un tableau.
Introduction à la série structures de données : pourquoi chaque structure est un compromis, ce que la série construit, et le lien avec la complexité algorithmique.