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).