Cours 4 - Trois algorithmes de recherche dans
un tableau 1
Cours 4
Recherche d'élément dans un tableau
Pour résoudre ce problème, nous allons écrire une fonction
fonction recherche(V x:Élément, V t:Tab) retourne entier
qui renvoie
• l'indice de
x
dans le tableau si
x
est dans le tableau
t
• N+1 si
x
n'est pas dans le tableau
t
1 - Introduction
Dans ce chapitre, on considère que :
• on manipule des données de type
Élément
;
• le type
Élément
respecte un ordre (Ex: entiers, chaussures…);
• on a défini un type
Tab
décrivant un tableau de taille N et contenant des
Élément
.
Tab: type tableau[1..N] de Élément;
Problème :
comment rechercher de manière efficace un élément dans un tableau
trié ou non trié?
Principe : on effectue une recherche séquentielle jusqu'à ce qu'on
• trouve l'élément recherché;
OU
• atteigne la fin du tableau.
2 – Recherche séquentielle dans un tableau
quelconque
Quel est le coût de cette recherche?
Il y a plusieurs façons d'estimer le coût d'un algorithme :
1. le pire des cas
2. le meilleur des cas
3. le cas moyen
Évaluons le coût (le nombre de comparaisons) de la recherche dans un tableau.
Principe : on effectue une recherche séquentielle jusqu'à ce qu'on
• trouve l'élément recherché; OU
• rencontre un élément plus grand que celui recherché; OU
• atteigne la fin du tableau.
3 – Recherche séquentielle dans un tableau trié
Quel est le coût de cette recherche?
Il y a plusieurs façons d'estimer le coût d'un algorithme :
1. le pire des cas
2. le meilleur des cas
3. le cas moyen
Évaluons le coût (le nombre de comparaisons) de la recherche dans un tableau.
Si x n'est pas dans le tableau, on s'en aperçoit en moyenne en N/2
(contre N quand le tableau n'est pas trié).
Principe : on compare
x
avec l'élément
m
situé au milieu du tableau.
• si
m==x
, on a trouvé
x
, on arrête la recherche;
• si
m>x
on répète l'opération dans la moitié gauche du tableau;
• si
m<x
on répète l'opération dans la moitié droite du tableau.
4 – Recherche dichotomique dans un tableau trié
Quel est le coût de cette recherche?
Il y a plusieurs façons d'estimer le coût d'un algorithme :
1. le pire des cas
2. le meilleur des cas
3. le cas moyen
Si x n'est pas dans le tableau, on s'en aperçoit au pire des cas
en log
2
N (contre N lors d'une recherche séquentielle).
Ex: pour un tableau de taille 1000, on aura au pire environ 10 comparaisons à
effectuer lors d'une dichotomie, contre 1000 en séquentiel!
Si x est dans le tableau, on s'en aperçoit au pire des cas
en log
N (contre N lors d'une recherche séquentielle).