Complexité
Objectifs
Comment comparer des algorithmes ?
- Différencier complexité en temps et en espace
- Estimer la complexité d'un algorithme
Cours
F pour passer en plein écran ou O pour afficher la vue d'ensemble.
Versions sans animation, plein écran, imprimable.
Exercices
Calculer la complexité temporelle et spatiale des algorithmes suivants.
Max
FONCTION max(a, b)
SI a < b ALORS
RETOURNER b
SINON
RETOURNER a
FIN SI
FIN FONCTION
Solution
- Temps : O(1) car il n'y a pas de boucle, on effectue un nombre constant d'opérations.
- Espace : O(1) car il n'y a pas de liste qui grandit avec la taille des entrées.
Max Liste
FONCTION max_liste(liste)
max ← liste[0]
POUR i DE 1 À liste.taille - 1 FAIRE
SI liste[i] > max ALORS
max ← liste[i]
FIN SI
FIN POUR
RETOURNER max
FIN FONCTION
Solution
- Temps : O(n) car on parcourt une boucle qui dépend de la taille de la liste.
- Espace : O(n) car il y a une liste qui grandit avec la taille des entrées.
Recherche
FONCTION recherche(liste, valeur)
i ← 0
TANT QUE i < liste.taille FAIRE
SI liste[i] = valeur ALORS
RETOURNER i
FIN SI
i ← i + 1
FIN TANT QUE
RETOURNER -1
FIN FONCTION
Solution
- Temps : O(n) car on parcourt potentiellement toute la liste.
- Espace : O(n) car il y a une liste qui grandit avec la taille des entrées.
Inverse
FONCTION inverse(liste)
liste_inverse ← liste
POUR i DE 1 À liste.taille FAIRE
liste_inverse[i - 1] ← liste[liste.taille - i]
FIN POUR
RETOURNER liste_inverse
FIN FONCTION
Solution
- Temps : O(n) car on parcourt une boucle qui dépend de la taille de la liste.
- Espace : O(n) car il y a une liste qui grandit avec la taille des entrées.
