Programmation · concepts · fondamentaux
Qu’est-ce qu’un algorithme ?
C’est l’un des mots les plus employés dans la tech — « l’algorithme décide », « un algorithme plus rapide », « le fil algorithmique » — et l’un des moins précisément expliqués. Un algorithme est une idée simple et fondamentale qui se trouve sous tout l’informatique. Ce guide explique ce qu’est un algorithme, ses propriétés clés, des exemples tirés de la vie quotidienne et du code, pourquoi l’efficacité compte, et en quoi il diffère d’un programme.
La définition courte
Un algorithme est une procédure finie, étape par étape, pour résoudre un problème ou produire une sortie à partir d’une entrée. Donnez-lui la même entrée et suivez les étapes exactement, et il produit le même résultat à chaque fois. C’est une recette précise — indépendante de tout langage de programmation particulier.
Une analogie du quotidien
Une recette de cuisine est un algorithme : une liste définie d’étapes (« hacher les oignons, chauffer l’huile, ajouter et remuer pendant 5 minutes ») qui transforme des entrées (les ingrédients) en une sortie (un plat). De même que les instructions de la division posée apprise à l’école, ou les étapes pour monter un meuble en kit. L’idée précède largement les ordinateurs — le mot vient du mathématicien du IXe siècle al-Khwarizmi.
Les propriétés clés
- Des étapes bien définies — chaque instruction est claire et sans ambiguïté.
- Fini — il doit se terminer après un nombre limité d’étapes, et non tourner indéfiniment.
- Entrée et sortie définies — il prend zéro ou plusieurs entrées et produit un résultat.
- Effectif — chaque étape est assez élémentaire pour être réellement exécutée.
Un algorithme est aussi indépendant du langage : le même algorithme de tri peut être écrit en Python, Haskell, Rust ou à la main sur papier. L’algorithme est l’idée ; le code en est une expression.
Un exemple concret
Pour trouver le plus grand nombre dans une liste, l’algorithme est :
1. Assume the first number is the largest so far.
2. Look at each remaining number in turn.
3. If it is bigger than the largest so far, make it the new largest.
4. After the last number, the largest so far is the answer. C’est un algorithme complet — écrit en clair, sans code requis. Le traduire dans un langage est une étape séparée et mécanique.
Pourquoi l’efficacité compte : Big-O
Différents algorithmes peuvent résoudre le même problème avec des quantités de travail très différentes. La notation Big-O décrit comment le coût d’un algorithme croît à mesure que l’entrée grandit. Parcourir une liste une fois pour trouver la plus grande valeur est en O(n) — le travail croît proportionnellement au nombre d’éléments. Une approche naïve qui comparerait chaque paire serait en O(n²) — bien plus lente pour de grandes entrées. Choisir un meilleur algorithme compte souvent plus qu’un ordinateur plus rapide : un tri en O(n log n) battra un tri en O(n²) sur une grande liste à chaque fois.
Algorithme vs programme
Ils sont liés mais ne sont pas la même chose. Un algorithme est la méthode abstraite — les étapes. Un programme est une implémentation concrète d’un ou plusieurs algorithmes dans un langage précis, avec tous les détails du monde réel (gestion des entrées, erreurs, mémoire) renseignés. On conçoit d’abord l’algorithme, puis on l’implémente. Le même algorithme peut alimenter de nombreux programmes.
FAQ
Un algorithme est-il la même chose que du code ? Non. L’algorithme est l’ensemble d’étapes indépendant du langage ; le code en est une implémentation. Le même algorithme peut s’écrire dans de nombreux langages.
Qu’est-ce qui rend un algorithme « bon » ? La correction d’abord (il produit la bonne sortie pour chaque entrée valide), puis l’efficacité (il utilise une quantité acceptable de temps et de mémoire, décrite par le Big-O), puis la clarté.
Qu’est-ce que la notation Big-O ? Une façon de décrire comment le temps d’exécution ou la mémoire d’un algorithme croît avec la taille de l’entrée — par ex. O(n) linéaire, O(n log n), O(n²) quadratique. Elle compare les algorithmes indépendamment de la machine exacte.
Faut-il des maths pour comprendre les algorithmes ? Une logique de base suffit pour commencer. Ceux du quotidien — recherche, tri, comptage — sont intuitifs ; les maths deviennent utiles quand on analyse et compare leur efficacité.
Les algorithmes sont le « quoi faire » ; un langage comme Haskell ou les données transportées par une API sont le « comment » et le « avec quoi ». Parcourez d’autres explications claires dans notre index des guides.