Nous avons besoin d'une matrice triée pour effectuer une recherche binaire. Dans ce cas, la complexité temporelle est déjà supérieure à la recherche linéaire, donc la recherche linéaire n'est pas une meilleure option dans ce cas? P>
4 Réponses :
Une recherche linéaire fonctionne dans D'autre part, une recherche binaire trie d'abord la matrice dans Pour un petit nombre de recherches, l'utilisation d'une recherche linéaire serait em> plus rapide que d'utiliser une recherche binaire. Cependant, chaque fois que le nombre de recherches est supérieur à Alors, la réponse à votre question est la suivante: la recherche linéaire et la recherche binaire effectuent des recherches de différentes manières. La recherche linéaire analyse à travers l'ensemble de la matrice, tandis que la recherche binaire trie le tableau en premier. Ces deux techniques de recherche ont complexités de temps différente forte>, mais cela ne signifie pas que l'un toujours em> sera meilleur que l'autre. P>
Plus précisément, la recherche linéaire fonctionne bien lorsque la taille de la liste est petite et / ou si vous n'avez besoin que d'effectuer un petit nombre de recherches. La recherche binaire devrait mieux fonctionner dans toutes les autres situations. P> O (n) code> heure, car elle analyse la matrice de début à la fin. P>
O (nlogn) code> heure (s'il n'est pas déjà trié), puis effectue des recherches dans
O (logn) CODE> TIME. P>
logn code>, la recherche binaire aura la main dans la performance. P>
Ce sera mieux si votre conteneur est déjà trié ou si vous souhaitez rechercher de nombreuses valeurs. P>
La recherche binaire est plus rapide que linéaire lorsque le tableau donné est déjà trié. p>
Pour une matrice triée, la recherche binaire offre une moyenne O (journal de journalisation) quant aux offres linéaires O (N). P>
Pour tout tableau donné qui n'est pas trié, la recherche linéaire devient la meilleure depuis que O (n) est meilleur que le tri de la matrice (à l'aide de QuicksTort par exemple O (n journal n)), puis appliquant une recherche binaire après cela, ainsi donné (N LOG N + LOGN) Complexité. P>
En fait, si ce n'est que des entiers, vous pouvez faire de la radiocsort qui est O (D * K) qui est similaire dans la complexité de la recherche linéaire.
Tout d'abord pour la recherche binaire La condition préalable est que la matrice est triée, ce qui signifie que vous n'avez pas besoin de le recourir. Deuxièmement, si vous parlez de tableaux entier, vous pouvez utiliser RADIXSORT O (D * N) ou comté d'O (N + L), similaire à la recherche linéaire en termes de complexité ... P>
Si vous devez trier une fois, recherchez de nombreuses reprises, le coût du tri est amorti sur de nombreuses recherches.
Parce que le tri ne fait pas partie de la recherche binaire, mais une exigence de données. Donc, pour une recherche simple + une recherche binaire peut-être plus lente qu'une recherche linéaire mais qu'une histoire différente de la comparaison d'une recherche avec une autre.
Un ami mathématicien m'a déjà dit "Eh bien, loger n est effectivement une constante pour le grand n!" En d'autres termes, o (n log n) n'est pas beaucoup pire que O (n) de manière pratique pour une seule recherche, ce qui rend la couverture à la nécessité de faire plusieurs recherches supplémentaires.
Notez que "trié" est une propriété des éléments et n'implique pas que la matrice a été i> triée. Par exemple
int A [] = {1,2,3,4,5}; code> définit un tableau trié.