Algorithmes de recherche

Recherche séquentielle

La méthode la plus simple pour rechercher un élément dans une liste consiste à parcourir séquentiellement la liste jusqu'à atteindre l'élément cherché. Si l'élément recherché est trouvé, sa position dans la liste est, dans ce cas, retournée par l'algorithme qui s'arrête alors qu'une valeur sentinelle, fixée par exemple à -1, est retournée en cas de recherche infructueuse. Le déroulement de cette méthode, appelée recherche séquentielle, est illustré par la figure ci-dessous:

algo1.jpg

Déroulement de la recherche séquentielle de l'élément 54 sur une liste d'entiers

A mesure que l'indice i progresse vers la droite de la liste, les éléments situés à sa gauche ont été comparés au nombre recherché sans succès et l'algorithme se termine lorsque l'indice atteint la position de l'élément cherché ou lorsqu'il atteint l'extrémité droite de la liste auquel cas une valeur sentinelle (par exemple -1) est retournée afin d'indiquer que l'élément cherché ne se trouve pas dans la liste. Si la liste est précédemment triée, remarquons qu'il n'est pas nécessaire de la parcourir entièrement si l'élément ne s'y trouve pas. Effet, si l'élément en cours de traitement est plus grand que l'élément cherché, le processus peut s'arrêter et conclure à l'absence de l'élément cherché dans la liste.

A vous de jouer !

En vous basant sur l'exemple présenté ci-dessus, répondez à chacun des points suivants:

  1. Calculez le nombre de comparaisons nécessaires pour rechercher les éléments 35 et 50 dans chacune des deux listes suivantes:
    1. aleatoire = [91, 17, 2, 35, 54, 12, 44, 25, 77, 33]
    2. triee = [2, 12, 17, 25, 33, 35, 44, 54, 77, 91]
  2. Pour chacun des deux types de listes (aléatoire et triée), déterminez le nombre moyen de comparaisons nécessaires à la recherche d'un élément appartenant, respectivement n'appartenant pas, à une liste, si celle-ci comporte 100 ou n éléments.
  3. Implémentez la recherche séquentielle en Python sur une liste aléatoire et sur une liste triée en vous basant sur le squelette téléchargeable ici.

|