Numérique et Sciences Informatiques > Algorithmique : Tris et Recherche > Algorithmes de Recherche > Recherche linéaire
La Recherche Linéaire : Une Introduction Simple
Comprendre le principe de la recherche linéaire (séquentielle) en algorithmique, avec des exemples et des explications claires pour les élèves de lycée. Apprenez à implémenter cet algorithme et à évaluer sa complexité.
Qu'est-ce que la Recherche Linéaire ?
La recherche linéaire, aussi appelée recherche séquentielle, est l'algorithme de recherche le plus simple. Elle consiste à parcourir un tableau (ou une liste) élément par élément, en comparant chaque élément à la valeur recherchée. Si la valeur est trouvée, l'algorithme renvoie sa position (indice) dans le tableau. Si la valeur n'est pas présente dans le tableau, l'algorithme renvoie généralement une valeur spéciale (par exemple, -1 ou null) pour indiquer l'échec de la recherche.
Comment fonctionne la Recherche Linéaire ?
Voici les étapes détaillées de l'algorithme de recherche linéaire :
L'algorithme se termine soit lorsqu'il trouve la valeur recherchée, soit lorsqu'il a parcouru tout le tableau.
Exemple Concret
Imaginez que vous avez un tableau d'entiers : tableau = [5, 12, 3, 8, 1, 9]
et que vous recherchez la valeur 8
.
L'algorithme procèderait comme suit :
Si vous recherchiez la valeur tableau[0]
(qui est 5) à 8. Ce n'est pas égal.tableau[1]
(qui est 12) à 8. Ce n'est pas égal.tableau[2]
(qui est 3) à 8. Ce n'est pas égal.tableau[3]
(qui est 8) à 8. C'est égal !4
, l'algorithme parcourrait tout le tableau sans trouver 4
et renverrait -1.
Pseudo-code
Voici un exemple de pseudo-code pour la recherche linéaire :
Fonction rechercheLineaire(tableau, valeurRecherchee):
Pour i allant de 0 à taille(tableau) - 1 faire:
Si tableau[i] est égal à valeurRecherchee alors:
Retourner i // La valeur a été trouvée à l'indice i
Fin Si
Fin Pour
Retourner -1 // La valeur n'a pas été trouvée dans le tableau
Fin Fonction
Implémentation en Python
Voici un exemple d'implémentation de la recherche linéaire en Python :
def recherche_lineaire(tableau, valeur_recherchee):
for i in range(len(tableau)):
if tableau[i] == valeur_recherchee:
return i # La valeur a été trouvée à l'indice i
return -1 # La valeur n'a pas été trouvée dans le tableau
Exemple d'utilisation :
tableau = [5, 12, 3, 8, 1, 9]
valeur_a_rechercher = 8
indice = recherche_lineaire(tableau, valeur_a_rechercher)
if indice != -1:
print(f"La valeur {valeur_a_rechercher} a été trouvée à l'indice {indice}")
else:
print(f"La valeur {valeur_a_rechercher} n'a pas été trouvée dans le tableau")
Complexité de la Recherche Linéaire
La complexité de la recherche linéaire est O(n), où n est la taille du tableau. Dans le pire des cas (la valeur recherchée est la dernière du tableau, ou n'est pas présente), l'algorithme doit parcourir tous les éléments du tableau. Dans le meilleur des cas (la valeur recherchée est le premier élément), l'algorithme trouve la valeur en une seule étape. La complexité moyenne est également O(n).
Avantages et Inconvénients
Ce qu'il faut retenir
FAQ
-
Quand utiliser la recherche linéaire ?
La recherche linéaire est appropriée lorsque le tableau est petit ou lorsque l'on ne peut pas se permettre de trier le tableau au préalable (par exemple, si les données sont en constante évolution). Pour les grands tableaux triés, d'autres algorithmes de recherche comme la recherche binaire sont beaucoup plus efficaces. -
La recherche linéaire fonctionne-t-elle avec des tableaux non triés ?
Oui, la recherche linéaire fonctionne parfaitement avec des tableaux non triés. C'est d'ailleurs un de ses principaux avantages. -
Quelle est la différence entre la recherche linéaire et la recherche binaire ?
La recherche linéaire parcourt le tableau séquentiellement, tandis que la recherche binaire divise le tableau en deux à chaque étape. La recherche binaire nécessite que le tableau soit trié, mais elle est beaucoup plus rapide (complexité O(log n)) que la recherche linéaire (complexité O(n)) pour les grands tableaux.