📘 Fiche de cours
L'essentiel du cours
L'algorithmique avancée repose sur l'optimisation. La complexité est mesurée par la notation grand O : $O(1)$ (constant), $O(n)$ (linéaire), $O(n \log n)$ (quasi-linéaire), $O(n^2)$ (quadratique).
- Structures linéaires : Listes chaînées (insertion/suppression en $O(1)$ si position connue), Piles (LIFO), Files (FIFO).
- Structures arborescentes : Arbres binaires de recherche (ABR) permettant une recherche en $O(\log n)$ en moyenne.
- Récursivité : Une fonction qui s'appelle elle-même avec une condition d'arrêt.
Méthodes à maîtriser
- Analyse de complexité : Compter le nombre d'opérations élémentaires en fonction de la taille $n$ de l'entrée.
- Manipulation de pointeurs : Savoir lier deux nœuds dans une liste chaînée sans perdre l'adresse du suivant.
- Parcours d'arbres : Maîtriser le parcours préfixe, infixe et postfixe.
Exemples corrigés
- Calcul de factorielle :
fact(n) = n * fact(n-1)avecfact(0) = 1. - Recherche dichotomique : Diviser l'espace de recherche par deux à chaque itération.
Erreurs fréquentes
- Oublier la condition d'arrêt dans une fonction récursive (boucle infinie).
- Confondre la complexité au pire cas et au cas moyen.
- Perdre la référence du premier élément (tête) d'une liste chaînée lors d'une insertion.