Numérique et sciences informatiques (spécialité) · Première
Le coût d'un algorithme : cours de NSI en Première
Publié le 6 novembre 2026 · Mis à jour le 6 novembre 2026 · Signaler une erreur
L'essentiel
- Le coût d'un algorithme se mesure en temps (nombre d'opérations élémentaires comptées) ou en espace (mémoire maximale utilisée en même temps).
- On l'exprime en fonction de la taille de l'instance, jamais d'une donnée précise : on retient le plus souvent le pire des cas, parfois le meilleur ou le cas moyen.
- Un coût linéaire double quand la taille double ; la recherche dichotomique, en temps logarithmique, ajoute seulement une itération quand la taille double.
- Si la longueur vérifie , la dichotomie fait au plus itérations.
- Un algorithme peu coûteux (glouton) ne garantit pas la solution optimale ; la programmation dynamique la garantit, au prix d'un coût plus élevé.
Pourquoi mesurer le coût d'un algorithme
Tu sais déjà écrire des algorithmes qui fonctionnent : trier un tableau, chercher une valeur, rendre la monnaie, classer une donnée avec ses voisins. Une question reste ouverte : combien coûte l'exécution ? Sur un tableau de dix cases, tous ces programmes semblent instantanés. Sur des millions de données, la différence entre deux méthodes peut faire passer le calcul de quelques instants à des heures.
Le programme de NSI le rappelle : de grands volumes de données sont traités par les ordinateurs, et il faut alors des algorithmes efficaces pour des opérations comme la sélection et la récupération des données 3. Pour dire qu'un algorithme est « efficace », il faut un moyen de le mesurer. Ce moyen, c'est le coût.
Dans ce cours, tu vas apprendre à :
- distinguer le coût en temps et le coût en mémoire ;
- compter des opérations élémentaires sans te perdre dans les détails ;
- exprimer un coût en fonction de la taille des données ;
- comparer deux algorithmes qui résolvent le même problème ;
- comprendre pourquoi un algorithme peu coûteux n'est pas toujours le meilleur.
Le coût en temps : compter des opérations
Étudier le coût en temps d'un algorithme revient à dénombrer les opérations de base qu'il exécute 6. Une opération élémentaire est une instruction simple : une addition, une comparaison, une affectation, un test de condition.
Faut-il tout compter ? Non. Les opérations élémentaires n'ont pas toutes le même coût, et vouloir les recenser toutes est à la fois difficile et inutile. On choisit donc celles que l'on veut compter, de façon à obtenir un ordre de grandeur intéressant selon le contexte 6.
Taille de l'instance et cas étudiés
Un algorithme travaille sur une instance : une donnée précise, par exemple un tableau particulier. Le coût sur cette instance dépend de son contenu, pas seulement de sa taille. Prenons la recherche d'une valeur dans un tableau en le parcourant du début à la fin : si la valeur est en première case, une seule comparaison suffit ; si elle est absente, il faut les faire toutes.
Pourtant, on souhaite évaluer le coût en fonction de la taille de l'instance, et non en fonction des instances elles-mêmes 6. Comme plusieurs instances de même taille peuvent avoir des coûts différents, il faut se donner une règle de mesure. Le plus souvent, on retient le coût du cas le plus défavorable ; on peut toutefois préférer le cas le plus favorable, ou bien une moyenne 6.
Un exemple complet : chercher dans un tableau
Comparons deux façons de chercher une valeur x dans un tableau t de éléments. Nous allons compter les comparaisons t[i] == x ou t[m] == x dans le pire des cas.
Voyons pourquoi, avec un raisonnement que tu peux refaire. Notons la longueur du tableau. Après un tour, il reste au plus la moitié des cases à examiner ; après deux tours, au plus un quart ; après tours, environ . La recherche s'arrête au plus tard quand il ne reste plus rien à examiner. Le résultat à retenir, pour le code ci-dessus : si l'entier vérifie , alors l'algorithme effectue au plus itérations 3.
| Taille l du tableau | Séquentielle (pire cas) | Dichotomie (au plus) |
|---|---|---|
| 1 000 | 1 000 | 10 |
| 1 000 000 | 1 000 000 | 20 |
| 1 000 000 000 | 1 000 000 000 | 30 |
Comment le coût grandit : les ordres de grandeur
Compter exactement comparaisons est précis, mais ce qui compte pour comparer deux algorithmes, c'est la manière dont le coût croît quand grandit. Pour cela, on observe ce qui se passe quand on double la taille des données.
| Type de coût | Exemple | Quand la taille double |
|---|---|---|
| Logarithmique | Recherche dichotomique | Une itération de plus |
| Linéaire | Recherche séquentielle | Le coût double |
| Quadratique | Paires comparées : n(n-1)/2 | Le coût est multiplié par environ 4 |
Dans les sujets du concours général, on demande souvent de donner le coût en temps et en mémoire d'un algorithme, avec un simple ordre de grandeur : on regarde par exemple le nombre d'entiers stockés pour la mémoire, et l'ordre de grandeur du nombre d'opérations pour le temps, sans chercher la valeur exacte 5. Cette approche est exactement celle de ce cours.
Le coût en mémoire
Le temps n'est pas la seule ressource. Un programme occupe aussi de la mémoire : variables, tableaux, listes créés au cours de l'exécution. Le coût spatial d'une exécution est la quantité maximale de mémoire utilisée simultanément par l'algorithme au cours de son exécution 6.
Le mot « simultanément » est important. Si ton programme crée un grand tableau puis le libère avant d'en créer un autre, il ne faut pas additionner les deux tailles : on retient le maximum présent en même temps. Dans les exercices de concours général, on se contente d'un ordre de grandeur du nombre d'entiers stockés 5.
Coût faible ou solution optimale ? Le rendu de monnaie
Un algorithme peu coûteux est-il pour autant le meilleur ? Pas forcément, car certains problèmes demandent une solution optimale, et un algorithme rapide peut se contenter d'une solution seulement correcte. Le rendu de monnaie en donne un exemple frappant.
Le problème : payer une somme avec le moins de pièces possible. Une réponse est dite optimale quand elle emploie le plus petit nombre de pièces possible 4. L'algorithme glouton, vu en classe de Première, consiste à payer d'abord avec la plus grosse pièce possible 4. Avec le système euro, on peut démontrer que cet algorithme donne toujours la réponse optimale 4.
Pour garantir l'optimalité, on utilise la programmation dynamique : on calcule le nombre minimal de pièces pour toutes les petites sommes, en mémorisant les résultats pour ne pas les recalculer. Avec les pièces de l'euro, l'appel de la version avec mémoïsation sur la somme répond immédiatement , et confirme que le glouton avait bien trouvé l'optimum dans ce cas 4.
Quel prix paye-t-on ? La version dynamique est de coût tout à fait raisonnable : elle utilise deux boucles imbriquées, ce qui donne un temps d'exécution qui grandit comme le produit des deux tailles en jeu 4. Elle utilise aussi de la mémoire pour stocker les résultats intermédiaires. À l'inverse, les algorithmes gloutons sont souvent moins coûteux à l'exécution, mais ils ne peuvent pas garantir une solution optimale 4.
Méthode : évaluer le coût d'un algorithme
Voici une démarche qui fonctionne pour la plupart des questions de cours et d'exercices.
- ChoisirDécider quelle opération on compte (comparaisons, additions).
- Définir la tailleNommer n : le nombre d'éléments de la donnée.
- Choisir le casPire des cas, sauf indication contraire.
- CompterDénombrer les opérations selon les boucles.
- ConclureDire comment le coût grandit quand n double.
Exercices corrigés
Exercice 1 Compter des comparaisons dans deux boucles imbriquées
On considère la fonction suivante, appelée avec un tableau t de éléments.
def doublons(t):
n = len(t)
for i in range(n):
for j in range(i + 1, n):
if t[i] == t[j]:
return True
return False
On compte les comparaisons t[i] == t[j].
- Dans quel cas la fonction fait-elle le plus de comparaisons ?
- Combien de comparaisons fait-elle dans ce cas pour ?
- Que devient ce nombre si l'on double la taille du tableau ?
Indice 1
Pour , combien de valeurs de y a-t-il ? Et pour ?
Indice 2
Additionne , ou utilise la formule .
Voir la correction pas à pas
Le pire des cas : la fonction ne s'arrête que si elle trouve deux éléments égaux. Si tous les éléments sont distincts, elle parcourt toutes les paires sans jamais rendre
True.Pour , prend valeurs ; pour , valeurs ; ... ; pour , aucune. Le total est , ce qui est bien .
Pour , on obtient . Le nombre est multiplié par un peu plus de : le coût est quadratique, il ne double pas.
Dans le pire des cas (éléments tous distincts), la fonction fait comparaisons, soit pour . Doubler la taille multiplie ce nombre par environ .
Exercice 2 Itérations d'une recherche dichotomique
Un annuaire trié contient numéros. On y cherche un numéro par recherche dichotomique.
- Rappelle la propriété qui lie et le nombre maximal d'itérations .
- Détermine le plus petit entier qui convient.
- Si l'annuaire contenait deux fois plus de numéros, combien d'itérations au plus faudrait-il ? Compare avec la recherche séquentielle.
Indice 1
Tu cherches le plus petit tel que .
Indice 2
Retiens que et calcule .
Voir la correction pas à pas
Si , la dichotomie effectue au plus itérations.
On sait que , donc . Comme , le plus petit entier qui convient est .
Avec numéros : . Il faut donc itérations au plus, soit une seule de plus.
La recherche séquentielle passerait, elle, de comparaisons à au pire.
La dichotomie fait au plus itérations sur numéros, et seulement si l'on double la taille. Un coût logarithmique grandit très lentement comparé à un coût linéaire.
Exercice 3 Glouton ou optimal ?
Un distributeur utilise des pièces de valeurs . Il doit rendre .
- Applique l'algorithme glouton et donne le nombre de pièces rendues.
- Trouve une solution qui utilise moins de pièces.
- De combien de pièces la solution optimale améliore-t-elle le glouton ?
- Pourquoi ce résultat montre-t-il qu'un algorithme de faible coût peut ne pas suffire ?
Indice 1
Le glouton prend toujours la plus grande pièce qui ne dépasse pas la somme restante.
Indice 2
Observe que est un multiple d'une des valeurs de pièce.
Voir la correction pas à pas
Glouton : la plus grande pièce est , il reste . La plus grande pièce est , il reste . Puis : il reste . Total : , soit pièces.
Solution meilleure : , soit pièces. On ne peut pas faire avec une seule pièce, car aucune pièce ne vaut .
Le gain est de pièce.
Le glouton est peu coûteux, mais il choisit sans jamais revenir en arrière : prendre l'empêche de trouver . Pour garantir le minimum, il faut un algorithme de programmation dynamique, plus coûteux en temps et en mémoire.
Le glouton rend pièces, alors que l'optimum en demande . Le faible coût d'un algorithme ne garantit pas une solution optimale.
Quiz
9 questions · correction immédiate · ton score reste sur ton appareil.
-
Le coût spatial est la mémoire maximale utilisée en même temps 6. La somme de toutes les mémoires est une erreur tentante : une mémoire libérée avant d'en utiliser une autre ne s'additionne pas. Le temps en secondes et le nombre de lignes ne sont pas des coûts au sens du cours.
-
Le choix le plus courant est de regarder le pire des cas 6, car il donne une garantie sur toutes les instances d'une taille donnée. Le meilleur des cas est trop optimiste : il décrit une situation favorable qui peut ne jamais se produire.
-
Le coût est linéaire : le temps double quand la longueur double 3, donc comparaisons. Répondre ou revient à croire que la croissance est logarithmique, ce qui est le cas de la dichotomie mais pas de la recherche séquentielle. viendrait d'un doublement appliqué deux fois.
-
La propriété donne un majorant : au plus itérations 3. « Exactement » est faux, car la valeur peut être trouvée avant. « Au moins » inverse le sens de la propriété. Faire itérations serait le comportement de la recherche séquentielle.
-
On a donc ne suffit pas, et . La réponse est . Prendre viendrait de l'idée qu'on peut arrondir vers le bas, alors qu'il faut garantir le pire cas.
-
Faux. Le tri par sélection recherche toujours le minimum de la partie non triée en parcourant tous ses éléments, il fait comparaisons quelles que soient les données. C'est le tri par insertion qui profite d'un tableau déjà trié, avec comparaisons.
-
On sélectionne les opérations à compter, car les recenser toutes est difficile et inutile 6 ; et l'objectif est d'évaluer le coût en fonction de la taille de l'instance 6. Les opérations n'ont pas toutes le même coût 6, donc la deuxième proposition est fausse. Le chronomètre dépend de la machine : ce n'est pas la mesure du cours.
-
Le coût spatial est la mémoire maximale utilisée simultanément 6 : les deux tableaux n'existent jamais ensemble, donc c'est la taille d'un seul. Additionner les deux est l'erreur tentante ; dire zéro oublie que la mémoire est bien occupée pendant l'exécution.
Les questions qu'on se pose
Pourquoi ne mesure-t-on pas simplement le temps en secondes ?
Le temps en secondes dépend de l'ordinateur, du langage et des programmes qui tournent en même temps. Deux élèves obtiendraient des résultats différents pour le même algorithme. Compter des opérations élémentaires donne un résultat qui dépend seulement de l'algorithme et de la taille des données, donc comparable partout.
Faut-il compter toutes les instructions d'un programme ?
Non. Les opérations élémentaires n'ont pas toutes le même coût, et les recenser toutes est à la fois difficile et inutile ; on sélectionne celles qui donnent un ordre de grandeur intéressant 6. En pratique, on compte l'opération qui se répète le plus, souvent une comparaison dans la boucle la plus intérieure. Annonce toujours ce que tu comptes.
Pourquoi étudie-t-on surtout le pire des cas ?
Parce qu'il donne une garantie : quelle que soit l'instance de taille , le coût ne dépassera pas cette valeur. C'est le choix le plus courant, même si l'on peut aussi étudier le meilleur des cas ou le coût moyen 6. Le meilleur des cas est trop optimiste pour juger un algorithme.
Pourquoi la dichotomie est-elle bien plus rapide que la recherche séquentielle ?
Parce qu'à chaque tour elle écarte la moitié des cases restantes, alors que la recherche séquentielle n'en écarte qu'une. Son coût est logarithmique 2 : si , elle fait au plus itérations 3. Sur un million de cases, cela fait au plus itérations contre un million de comparaisons au pire pour la recherche séquentielle. Attention : il faut que le tableau soit trié.
Un algorithme glouton est-il toujours à éviter puisqu'il n'est pas toujours optimal ?
Non. Les algorithmes gloutons sont souvent moins coûteux à l'exécution, mais sans garantie d'optimalité 4. Pour certains problèmes, comme le rendu de monnaie avec les pièces de l'euro, on peut démontrer qu'il donne toujours l'optimum 4. Le choix dépend de ce qu'on exige : une réponse rapide et correcte, ou la meilleure réponse à coup sûr.
Que demande-t-on sur le coût aux évaluations de NSI ?
On demande typiquement de donner le coût en temps et en mémoire d'un algorithme, en ordre de grandeur, et parfois de concevoir un algorithme dont le coût ne dépasse pas une limite imposée, en expliquant son idée en français 5. Prépare-toi à justifier : ce que tu comptes, la taille choisie, le cas étudié.
Sources
- Ressources d'accompagnement NSI Première - Page centrale, Éduscol. Consulté le 6 novembre 2026.
- Diviser pour régner - Document d'accompagnement, Éduscol. Consulté le 6 novembre 2026.
- Recherche dichotomique - Analyse de complexité, Éduscol. Consulté le 6 novembre 2026.
- Programmation dynamique - Étude de coût, Éduscol. Consulté le 6 novembre 2026.
- Sujets zéro du concours général NSI - Exemples d'algorithmes, Éduscol. Consulté le 6 novembre 2026.
- Analyse de la complexité des algorithmes, Wikipédia. Consulté le 6 novembre 2026.
Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.