J'ai toujours entendu dire que la recherche linéaire est une approche naïve et que la recherche binaire est meilleure que la performance en raison d'une meilleure complexité asymptotique. Mais je n'ai jamais compris pourquoi est-ce mieux que la recherche linéaire lorsque le tri est requis avant la recherche binaire?
La recherche linéaire est O(n)
et la recherche binaire est O(log n)
. Cela semble être la base pour dire que la recherche binaire est meilleure. Mais la recherche binaire nécessite un tri qui est O(n log n)
pour les meilleurs algorithmes. La recherche binaire ne devrait donc pas être plus rapide car elle nécessite un tri.
Je lis CLRS dans lequel l'auteur implique qu'en tri par insertion au lieu d'utiliser l'approche de recherche linéaire naïve, il est préférable d'utiliser la recherche binaire pour trouver l'endroit où l'élément doit être inséré. Dans ce cas, cela semble être justifié car à chaque itération de boucle, il existe une liste triée sur laquelle la recherche binaire peut être appliquée. Mais dans le cas général où il n'y a aucune garantie quant à l'ensemble de données dans lequel nous devons rechercher, la recherche binaire n'est-elle pas pire que la recherche linéaire en raison des exigences de tri?
Y a-t-il des considérations pratiques que j'écarte qui rendent la recherche binaire meilleure que la recherche linéaire? Ou la recherche binaire est-elle considérée comme meilleure que la recherche linéaire sans tenir compte du temps de calcul requis pour le tri?