Algorithmique et structures de données#

L’algorithmique est le fondement sur lequel repose toute l’informatique. Avant même d’écrire une ligne de code, un algorithme existe : une suite finie et non ambiguë d’instructions permettant de résoudre un problème. Comprendre les algorithmes et les structures de données, c’est comprendre comment les ordinateurs pensent — pourquoi une recherche dans un moteur prend quelques millisecondes alors qu’une liste téléphonique de dix millions d’entrées demanderait des heures à parcourir naïvement, pourquoi les réseaux sociaux peuvent calculer des recommandations en temps réel sur des graphes de milliards de nœuds, ou encore pourquoi certains problèmes d’apparence simple résistent à tout algorithme rapide connu depuis plus de cinquante ans.

Cet ouvrage adopte une approche résolument double : chaque concept est illustré par une implémentation Python exécutable, lisible et idiomatique, puis par une implémentation Rust statique, idiomatique et performante. Cette dualité n’est pas ornementale. Python, avec ses structures de données de haut niveau et ses bibliothèques scientifiques (heapq, collections, numpy, matplotlib), permet d’explorer rapidement les idées, de visualiser les structures et de valider les algorithmes par des tests. Rust, avec son système de types expressif, ses garanties de sécurité mémoire et ses performances proches du C, illustre comment les mêmes algorithmes sont implémentés dans des systèmes à haute performance — compilateurs, bases de données, systèmes d’exploitation. Comprendre les deux langages côte à côte renforce la compréhension des compromis fondamentaux entre sécurité, expressivité et performance.

Ce livre s’adresse aux étudiants en informatique qui souhaitent consolider leurs bases théoriques, aux développeurs en activité qui préparent des entretiens techniques ou veulent approfondir leur culture algorithmique, et aux curieux de toute formation attirés par la beauté des idées qui sous-tendent les logiciels modernes. Un niveau de programmation intermédiaire en Python est suffisant pour suivre l’ensemble des chapitres ; les parties Rust sont autonomes et ne nécessitent pas de prérequis dans ce langage.

Partie I — Fondements#

Partie II — Structures de données#

Partie III — Algorithmes de tri#

Partie IV — Algorithmes classiques#

Partie V — Sujets avancés#


À propos de ce livre. Cet ouvrage couvre l’algorithmique et les structures de données depuis les fondements de la complexité asymptotique jusqu’aux algorithmes avancés sur les chaînes, les graphes et les problèmes NP-complets, en passant par les structures de données classiques et les paradigmes de conception algorithmique. Chaque chapitre mêle explications conceptuelles rigoureuses, preuves de correction, visualisations matplotlib et implémentations dans deux langages complémentaires. La rédaction a été réalisée par Lôc Cosnier avec l’assistance de Claude (Anthropic), un modèle de langage. Le contenu a été relu, structuré et validé par l’auteur ; toute erreur restante lui est imputable.