Quelle est la différence entre la recherche Linéaire et Binaire de recherche?
Quelle est la différence entre la recherche Linéaire et Binaire de recherche?
- Veuillez lire les sections appropriées de votre matériel de cours qui, je l'espère, été sélectionnés et préparés par votre instructeur(s). À défaut, un général de wikipédia, c2 ou de recherche de google peut répondre de ces sortes de questions. Il ya une bonne quantité de bien faire cours/notes de cours pour être trouvés en ligne ainsi.
Vous devez vous connecter pour publier un commentaire.
Un la recherche linéaire regarde vers le bas d'une liste, un élément à la fois, sans sauter. Dans la complexité, il est un
O(n)
de recherche - le temps nécessaire à la recherche de la liste grandit au même rythme que la liste n'.Un recherche binaire est quand vous commencez par le moyen d'une liste triée, et de voir si elle est supérieure ou inférieure à la valeur que vous recherchez, qui détermine si la valeur est dans la première ou de la deuxième moitié de la liste. Saut à mi-chemin par le biais de la sous-liste, et de les comparer à nouveau, etc. C'est à peu près la façon dont les êtres humains en général la recherche d'un mot dans un dictionnaire (même si nous utilisons une meilleure heuristique, évidemment - si vous êtes à la recherche pour "chat", vous n'avez pas commencer à "M"). Dans la complexité, il est un
O(log n)
de recherche - le nombre d'opérations de recherche se développe plus lentement que la liste ne fait, parce que vous êtes à la réduction de moitié de l' "espace de recherche" à chaque opération.Comme un exemple, supposons que vous avez été la recherche de U dans la liste de A à Z de lettres (indice de 0 à 25; nous sommes à la recherche de la valeur à l'indice 20).
Une recherche linéaire voudrais poser la question:
La recherche binaire voudrais poser la question:
De comparer les deux:
Pense qu'il y a deux façons différentes de trouver votre chemin dans un répertoire. Une recherche linéaire est à partir du début, à la lecture de tous les noms jusqu'à ce que vous trouver ce que vous cherchez. Une recherche binaire, d'autre part, c'est quand vous ouvrez le livre (généralement dans le milieu), regarder le nom sur le haut de la page, et de décider si le nom que vous cherchez est plus grand ou plus petit que celui que vous cherchez. Si le nom que vous cherchez est plus grand, alors vous continuez à la recherche de la partie supérieure de l'ouvrage dans cette très à la mode.
Un linéaire de recherche fonctionne en examinant chaque élément dans une liste de données jusqu'à ce qu'il trouve la cible ou atteint la fin. Il en résulte en O(n) rendement sur une liste.
Une recherche binaire est livré avec la condition que les données doivent être triées. Nous pouvons tirer parti de cette information pour diminuer le nombre d'articles que nous avons besoin de regarder pour trouver notre cible. Nous savons que si nous regardons un élément de hasard dans les données (disons le milieu de l'élément), et que le point est plus grand que notre cible, puis tous les éléments à droite de cet élément sera également plus grand que notre cible. Cela signifie que nous avons seulement besoin de regarder la partie gauche de données. Fondamentalement, chaque fois que l'on recherche de la cible et de manquer, nous pouvons éliminer la moitié du reste des éléments. Cela nous donne une belle O(log n) le temps de la complexité.
Rappelez-vous juste que le tri des données, même avec le plus efficace algorithme, sera toujours plus lent qu'un linéaire de recherche (le plus rapide des algorithmes de tri sont en O(n * log n)). Donc, vous ne devriez jamais trier les données juste pour effectuer un seul binaire de recherche plus tard. Mais si vous comptez effectuer de nombreuses recherches (disons au moins O(log n) les recherches), il peut être utile de trier les données, de sorte que vous pouvez effectuer binaire de recherche. Vous pourriez aussi envisager d'autres structures de données comme une table de hachage dans de telles situations.
Un linéaire de recherche commence au début d'une liste de valeurs, et vérifie 1 par 1 pour que le résultat que vous recherchez.
Une recherche binaire commence au milieu d'un tableau trié, et détermine de quel côté (le cas échéant), la valeur que vous cherchez est sur. Que "la moitié" de la matrice est alors cherché à nouveau de la même manière, en divisant les résultats de moitié d'ici deux à chaque fois.
Assurez-vous de délibérer au sujet de si la victoire de le plus rapide de la recherche binaire vaut le coût de maintien de la liste triée (pour être en mesure d'utiliser les binaires de recherche). I. e. si vous avez beaucoup d'insérer/supprimer des opérations et seulement occasionnellement, de la recherche, de la recherche binaire peut au total être plus lente que la recherche linéaire.
Essayez ceci: Choisissez un nom aléatoire "Lastname, Firstname" et recherchez-le dans votre répertoire.
1er temps: au début du livre, de la lecture des noms jusqu'à ce que vous le trouvez, ou bien trouver l'endroit où il l'aurait été par ordre alphabétique et remarque qu'il n'y est pas.
2ème temps: Ouvrir le livre à la moitié du chemin et regardez à la page. Demandez-vous, si cette personne soit vers la gauche ou vers la droite. Selon les cas, prendre 1/2 et trouver le moyen de il. Répétez cette procédure jusqu'à ce que vous trouver la page où l'entrée doit être, puis appliquer le même processus pour les colonnes, ou tout simplement la recherche de façon linéaire le long les noms sur la page comme avant.
Temps à la fois des méthodes et des un rapport!
[également envisager de quelle approche est la meilleure si tout ce que vous avez une liste de noms, non triées...]
La recherche linéaire aussi appelé séquentielle de la recherche à chaque élément de la séquence depuis le début pour voir si l'élément est présent dans la structure de données. Lorsque la quantité de données est petit, cette recherche est rapide.Son facile, mais le travail nécessaire est proportionnelle à la quantité de données à rechercher.En doublant le nombre d'éléments de doubler le temps de rechercher si l'élément n'est pas présent.
Binaire de recherche est efficace pour le plus grand tableau. En cela, nous vérifier au moyen de l'élément.Si la valeur est plus grande que ce que nous recherchons, puis regardez dans la première moitié de l'année;sinon,regardez dans la seconde moitié. Répétez cette opération jusqu'à ce que l'élément désiré est trouvé. La table doit être triée pour les binaires de recherche. Il élimine la moitié des données à chaque itération.Son logarithmique.
Si nous avons des éléments de 1000 pour la recherche, la recherche binaire prend environ 10 étapes, la recherche linéaire 1000 étapes.
binaire de recherche s'exécute en O(logn), tandis que la recherche linéaire s'exécute en O(n) fois donc binaire de recherche a une meilleure performance
Un linéaire de la recherche vers le bas d'une liste, un élément à la fois, sans sauter. Dans la complexité, il est un O(n) de recherche - le temps nécessaire à la recherche de la liste grandit au même rythme que la liste n'.
Une recherche binaire est quand vous commencez par le moyen d'une liste triée, et de voir si elle est supérieure ou inférieure à la valeur que vous recherchez, qui détermine si la valeur est dans la première ou de la deuxième moitié de la liste. Saut à mi-chemin par le biais de la sous-liste, et de les comparer à nouveau, etc. C'est à peu près la façon dont les êtres humains en général la recherche d'un mot dans un dictionnaire (même si nous utilisons une meilleure heuristique, évidemment - si vous êtes à la recherche pour "chat", vous n'avez pas commencer à "M"). Dans la complexité, il est un O(log n) de recherche - le nombre d'opérations de recherche se développe plus lentement que la liste ne fait, parce que vous êtes à la réduction de moitié de l' "espace de recherche" à chaque opération.
Linear Search
regarde à travers les éléments jusqu'à ce qu'il trouve la recherche de la valeur.Efficacité:
O(n)
Exemple De Code Python:
Binary Search
trouve le moyen de l'élément de la matrice. Vérifie que la valeur moyenne est supérieure ou inférieure à la valeur de recherche. Si elle est plus petite, il obtient le côté gauche du tableau et trouve le moyen de l'élément de la partie. Si elle est plus grande, obtient la partie droite de la matrice. Elle boucle l'opération jusqu'à ce qu'il trouve la recherche de la valeur. Ou si il n'existe pas de valeur dans le tableau des finitions de la recherche.Efficacité:
O(logn)
Exemple De Code Python:
Aussi, vous pouvez voir les informations visualisées Linéaire et Binaire de Recherche ici: https://www.cs.usfca.edu/~galles/visualization/Search.html
Pour une compréhension claire, veuillez jeter un oeil à mes codepen implémentations https://codepen.io/serdarsenay/pen/XELWqN
Plus grande différence est que le besoin de trier votre échantillon avant de l'appliquer binaire de recherche, donc pour la plupart "taille normale" (qui signifie être avancé) les échantillons seront plus rapidement à la recherche avec un linéaire de l'algorithme de recherche.
Voici le code javascript, html et css et complète exécution d'exemple, veuillez consulter ci-dessus codepen lien.