coldwa.st
Tous les guidesProgrammationWebDonnéesOutilsBases de donnéesHaskellConceptsCabal & buildsChaîne d’outilsCompilateurPerformanceÉditeur & HLS

Programmation · concepts · fondamentaux

Qu’est-ce qu’un algorithme ?

Par ColdwastMis à jour le 14 juin 20267 min de lecture#algorithm#concepts#cs
Des flux de code vert sur un écran sombre
Des flux de code à l’écran — un algorithme est la logique étape par étape qu’exécute un code comme celui-ci.

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.

Du code source coloré sur un moniteur
Du code source coloré sur un moniteur — le code est une expression concrète d’un algorithme, l’idée sous-jacente étape par étape.

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.

Guide indépendant, maintenu par la communauté. coldwa.st est un site de ressources de programmation ; cet article est un écrit explicatif neuf et original sur les algorithmes. Les exemples sont illustratifs ; vérifiez les affirmations de complexité auprès d’un texte de référence quand cela compte.