Il faut retrier `a chaque fois la liste. Comme on ne rajoute ou on ne
supprime qu’un ´el´ement, ceci revient `a trouver o`u l’´el´ement doit ˆetre plac´e
ou supprimer, puis `a d´ecaler tous les autres ´el´ements.
De l`a, le fait de d´ecaler les ´el´ements revient – au pire – `a tous les d´ecaler et
donc am`ene `a une complexit´e de N. En moyenne, comme l’´el´ement `a d´eplacer
peut ˆetre de fa¸con ´equiprobable `a toutes les positions de la liste, et comme
si le premier ´el´ement `a d´ecaler est en position i, il faut en d´ecaler N−i, le
nombre moyen de d´ecalage est : P1≤i≤N(1
N(N−i)) = N+1
2.
De fa¸con dichotomique, on coupe successivement la liste en 2 et on choisit
o`u regarder (puisque la liste est tri´ee, on sait a priori dans quelle partie de
la liste est l’´el´ement recherch´e s’il est pr´esent).
On a donc besoin de log2(N) op´eration. En effet, `a chaque ´etape on coupe
la liste en 2 jusqu’`a trouver le bon ´el´ement.
En effet, s’il y a 2 ´el´ements une ´etape suffit, s’il y a au plus 4 ´el´ements, 2
´etapes suffisent, et ainsi de suite. Par l`a, trouver un ´el´ement parmi 2kpeut
se faire en k´etapes.
1.3 Arbres binaires de recherche
On utilise ici des arbres binaires de recherche stocker nos donn´ees. Un arbre
binaire de recherche est un arbre tel que pour tout nœud, son sous arbre
gauche ne contienne que des valeurs strictement plus petites que sa propre
valeur, et que son sous-arbre droit ne contienne que des valeurs plus grande
ou ´egale `a sa valeur.
Proposez des algorithmes (avec complexit´es maximales et moyennes) pour :
•cr´eation de la structure,
•recherche d’un ´el´ement,
•insertion d’un ´el´ement (qu’il soit vide ou pas),
•suppression d’un ´el´ement.
Solution :
La figure 1 montre un Arbre binaire de recherche.
Nous ne d´etaillerons pas ici les algorithmes d’insertion et de suppression
mais leur complexit´e est la mˆeme :
2