Cours 4 - Trois algorithmes de recherche dans un tableau 1 Cours 4

publicité
Cours 4 - Trois algorithmes de recherche dans
un tableau
1
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…);
Cours 4
• 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;
Recherche d'élément dans un tableau
Problème :
comment rechercher de manière efficace un élément dans un tableau
trié ou non trié?
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
2 – Recherche séquentielle dans un tableau
quelconque
Principe : on effectue une recherche séquentielle jusqu'à ce qu'on
• trouve l'élément recherché;
OU
• atteigne la fin du tableau.
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.
3 – Recherche séquentielle dans un tableau trié
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é;
• atteigne la fin du tableau.
OU
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é).
4 – Recherche dichotomique dans un tableau 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.
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 log2N (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 log2N (contre N lors d'une recherche séquentielle).
Téléchargement