j.verliat.free.fr
Exercice 2. HHH Tri par insertion
Implémenter l’algorithme de tri par insertion dans une fonction.
II Algorithmes de recherche
Dans cette section, nous souhaitons savoir si, étant donnée une liste L, celle-ci contient un objet donné a.
1. Recherche dans une liste quelconque
Dans une liste quelconque, on peut simplement parcourir la liste jusqu’à ce que l’élément soit trouvé ou que la
fin de la liste soit atteinte. Le principe est élémentaire, mais si la liste est longue, le temps de recherche peut
être long.
Exercice 3. III Algorithme de recherche élémentaire
Implémenter l’algorithme de recherche élémentaire dans une fonction recherche.
On s’interdira toute utilisation de la fonction Python in.
2. Recherche dans une liste triée
Dans une liste triée, on peut proposer des méthodes assez simples et néanmoins beaucoup plus rapides.
a) Recherche séquentielle
On passe en revue la liste tant que les éléments sont plus petits que a, jusqu’à :
ãobtenir un élément égal à a, auquel cas on conclut que aappartient à L
ãobtenir un élément strictement plus grand que a, auquel cas on conclut que an’appartient pas à L.
Principe
Exercice 4. HII Algorithme de recherche séquentielle
Implémenter l’algorithme de recherche séquentielle dans une fonction recherche_seq.
b) Recherche par dichotomie
On pose c=len(L)//2. On modifie la liste Ltant que Lest composée de strictement plus d’un élément et
que aet L[c] sont différents, de la manière suivante :
ãsi aest strictement supérieur à L[c], la liste Ldevient la sous-liste des éléments de Lde place kavec
k>c;
ãsi aest strictement inférieur à L[c], la liste Ldevient la sous-liste des éléments de Lde place kavec
k<c.
Principe
Exemple 3. Ldésigne la liste [1,3,4,6,7,8,11,13,15,18,20] et al’entier 14. Les étapes successives sont les
suivantes.
L = [1,3,4,6,7,8,11,13,15,18,20],c=5,L(5)=8,a>L(5)
L = [11,13,15,18,20],c=2,L(2)=15,a<L(2)
L = [11,13],c=1,L(1)=13,a>L(1)
L = [], donc an’appartient pas à L
Exercice 5. HHI Algorithme de recherche par dichotomie
Implémenter l’algorithme de recherche par dichotomie dans une fonction recherche_dicho.
Exercice 6. HHH Algorithme récursif de recherche par dichotomie
Proposer une version récursive : recherche_dicho_rec.
2/3