Aller au contenu

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 ll vérifie l<2nl < 2^n, la dichotomie fait au plus nn 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 ll é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 ll 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 kk tours, environ l/2kl / 2^k. 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 nn vérifie l<2nl < 2^n, alors l'algorithme effectue au plus nn itérations 3.

Comparaison des itérations au pire
Taille l du tableauSéquentielle (pire cas)Dichotomie (au plus)
1 0001 00010
1 000 0001 000 00020
1 000 000 0001 000 000 00030
Comparaison des itérations au pire · Valeurs calculées avec la propriété : si l < 2^n, au plus n itérations.

Comment le coût grandit : les ordres de grandeur

Compter exactement n(n−1)2\frac{n(n-1)}{2} comparaisons est précis, mais ce qui compte pour comparer deux algorithmes, c'est la manière dont le coût croît quand nn grandit. Pour cela, on observe ce qui se passe quand on double la taille des données.

Effet du doublement de la taille
Type de coûtExempleQuand la taille double
LogarithmiqueRecherche dichotomiqueUne itération de plus
LinéaireRecherche séquentielleLe coût double
QuadratiquePaires comparées : n(n-1)/2Le coût est multiplié par environ 4
Effet du doublement de la taille · Exemples calculés dans le cours.

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 4848 répond immédiatement 55, 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.

Évaluer le coût d'un algorithmeÉtapes successives pour évaluer le coût d'un algorithme, du choix de l'opération à compter jusqu'à la conclusion.1ChoisirDécider quelle opération on compte (comparaisons, additions).2Définir la tailleNommer n : le nombre d'éléments de la donnée.3Choisir le casPire des cas, sauf indication contraire.4CompterDénombrer les opérations selon les boucles.5ConclureDire comment le coût grandit quand n double.
  1. ChoisirDécider quelle opération on compte (comparaisons, additions).
  2. Définir la tailleNommer n : le nombre d'éléments de la donnée.
  3. Choisir le casPire des cas, sauf indication contraire.
  4. CompterDénombrer les opérations selon les boucles.
  5. ConclureDire comment le coût grandit quand n double.
Évaluer le coût d'un algorithme

Exercices corrigés

Exercice 1 Compter des comparaisons dans deux boucles imbriquées

★☆☆Environ 10 min

On considère la fonction suivante, appelée avec un tableau t de 1010 é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].

  1. Dans quel cas la fonction fait-elle le plus de comparaisons ?
  2. Combien de comparaisons fait-elle dans ce cas pour n=10n = 10 ?
  3. Que devient ce nombre si l'on double la taille du tableau ?
Indice 1

Pour i=0i = 0, combien de valeurs de jj y a-t-il ? Et pour i=1i = 1 ?

Indice 2

Additionne 9+8+⋯+1+09 + 8 + \dots + 1 + 0, ou utilise la formule n(n−1)2\frac{n(n-1)}{2}.

Voir la correction pas à pas
  1. 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.

  2. Pour i=0i = 0, jj prend 99 valeurs ; pour i=1i = 1, 88 valeurs ; ... ; pour i=9i = 9, aucune. Le total est 9+8+⋯+1=459 + 8 + \dots + 1 = 45, ce qui est bien 10×92\frac{10 \times 9}{2}.

  3. Pour n=20n = 20, on obtient 20×192=190\frac{20 \times 19}{2} = 190. Le nombre est multiplié par un peu plus de 44 : le coût est quadratique, il ne double pas.

Dans le pire des cas (éléments tous distincts), la fonction fait n(n−1)2\frac{n(n-1)}{2} comparaisons, soit 4545 pour n=10n = 10. Doubler la taille multiplie ce nombre par environ 44.

Exercice 2 Itérations d'une recherche dichotomique

★★☆Environ 10 min

Un annuaire trié contient l=1 000 000l = 1\,000\,000 numéros. On y cherche un numéro par recherche dichotomique.

  1. Rappelle la propriété qui lie ll et le nombre maximal d'itérations nn.
  2. Détermine le plus petit entier nn qui convient.
  3. 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 nn tel que 2n>1 000 0002^n > 1\,000\,000.

Indice 2

Retiens que 210=10242^{10} = 1024 et calcule 2202^{20}.

Voir la correction pas à pas
  1. Si l<2nl < 2^n, la dichotomie effectue au plus nn itérations.

  2. On sait que 210=10242^{10} = 1024, donc 220=1 048 576>1062^{20} = 1\,048\,576 > 10^6. Comme 219=524 288<1062^{19} = 524\,288 < 10^6, le plus petit entier qui convient est n=20n = 20.

  3. Avec 2×1062 \times 10^6 numéros : 2 000 000<221=2 097 1522\,000\,000 < 2^{21} = 2\,097\,152. Il faut donc 2121 itérations au plus, soit une seule de plus.

  4. La recherche séquentielle passerait, elle, de 1 000 0001\,000\,000 comparaisons à 2 000 0002\,000\,000 au pire.

La dichotomie fait au plus 2020 itérations sur 10610^6 numéros, et seulement 2121 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 ?

★★★Environ 15 min

Un distributeur utilise des pièces de valeurs 30,24,12,6,3,130, 24, 12, 6, 3, 1. Il doit rendre 4848.

  1. Applique l'algorithme glouton et donne le nombre de pièces rendues.
  2. Trouve une solution qui utilise moins de pièces.
  3. De combien de pièces la solution optimale améliore-t-elle le glouton ?
  4. 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 4848 est un multiple d'une des valeurs de pièce.

Voir la correction pas à pas
  1. Glouton : la plus grande pièce ≤48\leq 48 est 3030, il reste 1818. La plus grande pièce ≤18\leq 18 est 1212, il reste 66. Puis 66 : il reste 00. Total : 30+12+630 + 12 + 6, soit 33 pièces.

  2. Solution meilleure : 24+24=4824 + 24 = 48, soit 22 pièces. On ne peut pas faire avec une seule pièce, car aucune pièce ne vaut 4848.

  3. Le gain est de 3−2=13 - 2 = 1 pièce.

  4. Le glouton est peu coûteux, mais il choisit sans jamais revenir en arrière : prendre 3030 l'empêche de trouver 24+2424 + 24. Pour garantir le minimum, il faut un algorithme de programmation dynamique, plus coûteux en temps et en mémoire.

Le glouton rend 33 pièces, alors que l'optimum en demande 22. 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.

  1. Que mesure le coût en espace d'un algorithme ?

  2. Quelle mesure du coût retient-on le plus souvent pour évaluer un algorithme en fonction de la taille de l'instance ?

  3. Une recherche séquentielle dans un tableau de 500500 éléments fait 500500 comparaisons au pire. Pour un tableau de 10001000 éléments, combien en fait-elle au pire ?

  4. Si l<2nl < 2^n, que peut-on dire d'une recherche dichotomique sur un tableau de longueur ll ?

  5. Combien d'itérations au plus effectue une dichotomie sur 10001000 éléments ? On cherche le plus petit entier nn tel que 1000<2n1000 < 2^n.

  6. Le tri par sélection fait moins de comparaisons quand le tableau est déjà trié.

  7. Sur le système de pièces 30,24,12,6,3,130, 24, 12, 6, 3, 1, l'algorithme glouton rend 4848 avec 30+12+630 + 12 + 6. Que peut-on en conclure ?

  8. Parmi ces affirmations sur le coût, lesquelles sont vraies ? (plusieurs réponses)

    Plusieurs réponses possibles.

  9. Un algorithme crée un grand tableau, l'utilise, puis le libère avant d'en créer un second de même taille. Quel est son coût en espace, en ordre de grandeur ?

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 nn, 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 l<2nl < 2^n, elle fait au plus nn itérations 3. Sur un million de cases, cela fait au plus 2020 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

  1. Ressources d'accompagnement NSI Première - Page centrale, Éduscol. Consulté le 6 novembre 2026.
  2. Diviser pour régner - Document d'accompagnement, Éduscol. Consulté le 6 novembre 2026.
  3. Recherche dichotomique - Analyse de complexité, Éduscol. Consulté le 6 novembre 2026.
  4. Programmation dynamique - Étude de coût, Éduscol. Consulté le 6 novembre 2026.
  5. Sujets zéro du concours général NSI - Exemples d'algorithmes, Éduscol. Consulté le 6 novembre 2026.
  6. 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.

Signaler une erreur sur cette page

Je suis en…

Primaire

  • CP Bientôt
  • CE1 Bientôt
  • CE2 Bientôt
  • CM1 Bientôt
  • CM2 Bientôt

Collège

Lycée

Supérieur

  • BTS Bientôt
  • BUT Bientôt
  • Licence Bientôt
  • Prépas Bientôt

Sur cette page