Menu
Coddy logo textTech

Recherche linéaire

Dernière mise à jour

La recherche linéaire (aussi appelée recherche séquentielle) est l'algorithme de recherche le plus simple : commencez au premier élément et comparez chacun à la cible jusqu'à trouver une correspondance ou épuiser les éléments. Elle ne fait aucune hypothèse sur les données — le tableau peut être non trié, et les éléments peuvent être n'importe quoi que l'on peut comparer par égalité.

L'animation ci-dessus met en évidence chaque comparaison à mesure que le parcours avance de gauche à droite et s'arrête dès que la cible apparaît. Sa simplicité se paie en vitesse : dans le pire cas, chaque élément est vérifié, elle s'exécute donc en O(n). Quand les données sont triées, la recherche dichotomique trouve la même réponse en O(log n) — et s'il vous faut d'abord des données triées, voyez le tri fusion.

Complexité en temps et en espace

CasComplexitéRemarques
Meilleur casO(1)Le premier élément est la cible.
Cas moyenO(n)En moyenne, la moitié des éléments est vérifiée avant un succès.
Pire casO(n)La cible est en dernière position — ou absente.
EspaceO(1)Seul l'indice courant est conservé.

Étape par étape

ÉtapeCe qui se passe
1Commencez à l'indice 0, le premier élément du tableau.
2Comparez l'élément courant à la valeur cible.
3S'ils sont égaux, renvoyez l'indice courant — trouvé.
4Sinon, avancez d'une position vers la droite et recommencez.
5Si la fin du tableau est atteinte sans correspondance, la cible est absente (renvoyez -1).

Exemple détaillé

Recherche de 5 dans [7, 3, 9, 1, 5, 8, 2] :

ComparaisonIndiceÉlémentRésultat
1077 ≠ 5 — on continue le parcours.
2133 ≠ 5 — on continue le parcours.
3299 ≠ 5 — on continue le parcours.
4311 ≠ 5 — on continue le parcours.
5455 = 5 — trouvé à l'indice 4.

Quand utiliser la recherche linéaire

À utiliser quandÀ éviter quand
Les données ne sont pas triées ou changent constammentLes données sont triées — la recherche dichotomique est exponentiellement plus rapide
La collection est petite, la simplicité l'emporteLe jeu de données est grand et cherché de façon répétée
Vous n'avez qu'un accès séquentiel (flux, listes chaînées)Vous pouvez vous offrir un index ou une table de hachage pour des recherches en O(1)

Une implémentation propre et exécutable de Linear Search en Python, JavaScript, Java, C++, C, Pseudocode. Choisissez un langage, copiez le code ou ouvrez-le préchargé dans le Playground Coddy.

Code de Linear Search en Python

Python
1def linear_search(a, target):2    # Scan left to right until the target appears3    for i in range(len(a)):4        if a[i] == target:5            return i6    return -17
8
9nums = [7, 3, 9, 1, 5, 8, 2]10print("Index of 5:", linear_search(nums, 5))11print("Index of 4:", linear_search(nums, 4))
Exécutez ce code dans le Playground Python

FAQ sur la recherche linéaire

Quelle est la complexité en temps de la recherche linéaire ?
O(n) dans les cas moyen et pire — le parcours peut devoir visiter chaque élément — et O(1) dans le meilleur cas, quand le premier élément est la cible. Elle utilise O(1) d'espace supplémentaire.
La recherche linéaire a-t-elle besoin de données triées ?
Non — c'est son principal avantage. La recherche linéaire fonctionne sur des données totalement non triées car elle vérifie l'égalité de chaque élément ; l'ordre n'a jamais d'importance. La recherche dichotomique, en revanche, ne fonctionne que sur des tableaux triés.
Quand la recherche linéaire est-elle meilleure que la recherche dichotomique ?
Quand les données ne sont pas triées et ne sont cherchées qu'une seule fois (trier d'abord coûterait O(n log n)), quand la collection est minuscule, ou quand vous n'avez qu'un accès séquentiel comme un flux ou une liste chaînée. Pour des recherches répétées sur des tableaux triés, la recherche dichotomique l'emporte.
La recherche linéaire est-elle la même chose que la recherche séquentielle ?
Oui — les deux noms décrivent le même algorithme : parcourir les éléments dans l'ordre jusqu'à trouver la cible ou atteindre la fin de la collection.
Combien de comparaisons la recherche linéaire fait-elle en moyenne ?
Si la cible est présente et a la même probabilité d'être n'importe où, environ n/2 comparaisons en moyenne ; si la cible est absente, exactement n. Cette croissance linéaire est la raison de son nom.
Coddy programming languages illustration

Maîtrisez les algorithmes avec Coddy

COMMENCER