Ce qu’il faut savoir
Un algorithme est la spécification d'un schéma de calcul sous forme d'une suite finie d'opérations élémentaires obéissant à un enchaînement déterminé.
Quand on écrit un algorithme, on utilise un langage dit "langage naturel" ("tant que", "si"...), ce langage naturel permet de passer facilement à un langage de programmation (Python, Java...), on dit alors que l'on implémente l'algorithme.
La notion de complexité d'un algorithme va rendre compte de l'efficacité de cet algorithme. Il existe 2 types de complexité : une complexité en temps et une complexité en mémoire. Nous nous intéresserons ici uniquement à la complexité en temps. La complexité en temps est directement liée au nombre d'opérations élémentaires qui doivent être exécutées afin de résoudre un problème donné.
Nous nous intéresserons uniquement à la complexité en temps “dans le pire cas”
Pour comparer des algorithmes, nous allons uniquement nous intéresser à ce que l'on appelle "l'ordre de grandeur asymptotique" (notation O)
Ce qu’il faut savoir faire
vous devez être capable d’analyser le fonctionnement d’un algorithme (faire tourner un algorithme “à la main”)
vous devez être capable de déterminer la complexité en temps dans le pire des cas d’un algorithme (exemples : O(n), O(n2), O(log2(n))...)