Transcription
1. Introduction: Je commande dans cette classe. Je veux parler de finery, chercher des coudes liés. Ces types d'albums viennent beaucoup, et c'est à vous de passer quelques minutes à rafraîchir vos connaissances. Savoir comment fonctionne une recherche binaire vous permet de comprendre d'autres Albertains sur la base du même principe. Après ce cours, vous aurez un bon rappel de la façon dont cela se passe, travailler et être un peu mieux préparé pour les faire dans une interview ou dans votre mot Dele dans les notes need show. Fournissez un lien le code source. Vous pouvez l'utiliser pour respecter davantage l'album. Voyez comment je mettrais cela en œuvre. Ok, commençons.
2. Explication d'algorithmes: Jetons un coup d'oeil à la recherche de Byner. Recherches binaires utilisées pour localiser quelque chose dans une sorte de liste. C' est une exigence. La liste doit être triée dans notre liste d'exemples. Ici, nous avons des lettres, et c'est un ordre alphabétique croissant. Si la liste n'est pas une sorte de binaire, recherche ne fonctionnera pas. recherche Beina obtient son nom parce que nous divisons la liste en deux à chaque fois que nous faisons une étape dans l'heure d'entre eux. Voyons donc cela par exemple. Cherchons la lettre G dans cette liste, donc on veut chercher la lettre G. Cette liste est longue de 10, donc on va commencer par le milieu. Élément. Le milieu va être toute la longueur divisée par deux. Disons juste cinq. Que ce soit vers le haut ou vers le bas par un ne fera pas une grande différence. Prends le contour. Ce qui continue de diviser la liste en deux, et il finira par trouver quelque chose. Donc si on a commencé le cinquième indice que 012345 ce n'est pas dans les cinq prochains. On va commencer ici. On dirait que c'est sur l'autre demi-liste. C' est très bien. Il y en a cinq des deux côtés. Encore une anomalie visuelle. Peu importe si c'est éteint d'un à cinq. Nous avons un K, qui n'est pas G. Le K est plus grand que le G, , donc cela nous dit quelque chose parce que le K est plus grand que le G. Nous savons que le G ne peut pas me droit de lui. Le G doit en sortir s'il est là. Donc la recherche binaire dit alors, Eh bien, regardons cette première moitié. Donc, quand une séparation de cette première moitié ici et regardons juste à travers ce chemin ici, c'est cinq long. Nous allons commencer au milieu de cela à nouveau maintenant cinq divisé par deux pourrait être 2,5 semaine autour. Trois ou deux ne font pas une grande différence. On va faire le tour aussi. Et que 012 j'égale deux. C' est quoi, à ce stade ? Nous ne l'avons pas à ce stade, et la facilité moins que le G. Donc encore une fois, cela nous dit quelque chose. quelle moitié des lis restants est-il ? Ce n'est pas la main gauche parce qu'il est plus grand que G, donc c'est sur la droite. Si c'est là, des recherches d'achat envoyées, donc c'est étroit. Notre recherche jusqu'à ici. C' est trop long et relatif à cette partie que nous voulons. Un élément est trop divisé par deux est un plus. On va regarder ici, je suis égal à 4 et on va trouver la lettre G. attention pour plus tard. Combien d'étapes il nous a fallu faire que Nous avons fait 123 Comparaisons. Nous avons fait trois comparaisons pour trouver l'article que nous voulions. Maintenant, regardons la lettre C. Nous savons que C n'est pas dans cette liste, mais voyons ce que fait l'algorithme de tri binaire dans ce cas encore, nous allons commencer au milieu de la liste ici à I égal à 5. Qué est plus grand que voit, donc nous savons qu'il doit être sur la moitié gauche, donc il va être juste dans cette demi-ligne contre nous savons où il est, et nous allons commencer au milieu de cette moitié maintenant. On va pointer vers le haut maintenant, et c'est tout. L' indice est égal à deux. Ce n'est pas la lettre que nous recherchons est plus grande que voir, donc ça nous dit encore, c'est dans la moitié gauche ici. Donc nous affinons encore notre recherche ici et maintenant nous n'avons pas encore plus petite liste, et nous allons choisir où se trouve le milieu à nouveau. Le milieu ici près de notre organe allait finir par commencer par ici. Ça commence quand je suis égal à un. Ce n'est pas la lettre que nous avons maintenant. C' est plus grand que C, et c'est du travail. C' est un peu déroutant de voir que nous avons encore deux côtés à cela. Même si les frontières ici à droite de D ne sont rien. Il y a en fait une liste vide ici. Nous ne regardons pas de ce côté à gauche de D. Nous devons juste être et nous savons que nous devons regarder à gauche parce que D est génial dans la mer. Donc nous réduisons la recherche à ce critère ici et nous faisons un pas de plus à I égal zéro et nous ne trouvons pas la mer. Maintenant, l'étoile binaire à ce stade dit, Eh bien, quelle moitié est-elle sur sa moitié sur la moitié gauche ? Mais cela n'a pas d'importance car il n'y a plus rien sur l'une ou l'autre moitié à rechercher car la longueur de la liste A restante est maintenant nulle. Nous savons que nous ne voyons pas dans cette liste. Ce n'est pas là pour référence à la complexité. Comptez à nouveau le nombre d'étapes. Nous avons 1234 étapes. Étapes du cours. C' est un peu plus que la guerre. Trois mettre idiot quatre étapes.
3. Complexité d'algorithmes: C' est à peu près comme ça que fonctionne la recherche binaire. Vous choisissez toujours un point de pivot. abord, vous choisissez le point au milieu et vous comparez la valeur. Si la valeur find est inférieure à celle que vous recherchez. Donc, c'est moins que c'est que vous allez chercher cette demi-valeur K est plus que ce que vous cherchez. Tu vas regarder la bonne moitié, donc si c'est plus grand que ça, donc c'est toujours plus grand en moins que comparaison. Et puis vous prenez la moitié et vous répétez la procédure, ce qui en fait un algorithme récursif. Bridge étape l'album en respectant la moitié de la liste des tailles. Permettez-moi de dessiner quelques cases où cela regarde pour la complexité de but. Donc je comprends ce qui se passe. Donc, nous avions le K et ensuite, si c'était plus grand que nous avons quelques boîtes à gauche, il n'y en a que cinq,
et de l'autre côté, nous n'en avons que quatre. Nous avons mis la liste en deux. Maintenant, la même chose va se passer ici. On va prendre celui au milieu, en choisir un au milieu ici, et ensuite il te restera avec deux à comparer ici, deux par ici et aussi et puis juste un. Donc la branche se termine ici et toujours à ceux. Ce sont des cas presque spéciaux, mais ils arrivent beaucoup. Tu as choisi le milieu. Et si ce n'est pas le milieu, vous finissez par devoir faire une recherche de plus sur chacun d'eux. Et c'est un modèle auquel vous devriez vous habituer dans les albums. Tu te sépares dans la moitié de chaque sens. Vous n'avez qu'à aller ici pour les boîtes uniques. Une fois que vous arrivez à l'une des boîtes vos recherches effectuées, avez-vous trouvé l'élément ou vous ne l'avez pas. Combien y a-t-il de pas ici ? Chaque fois que vous vous divisez en deux ou que vous dupliquez, vous devriez certainement reconnaître ce long avec un motif exponentiel. Donc ah, tri
binaire est un modèle plus long. Donc, nous avons un journal. Et encore une fois, c'est là que j'ai dit que ça n'a pas d'importance si c'est hors d'un, et donc ça pourrait être un peu plus haut ou plus bas. Le compte peut changer d'avant en arrière. Et c'est pour ça que nous disons , c'est un gros bout de longue durée. C' est la limite supérieure ne va pas aller au-delà du point où nous supprimons les contraintes. Vous pouvez aussi avoir de la chance. Parfois. Si vous cherchez le K, vous trouverez un soin tout de suite, auquel
cas il ne fait qu'une seule comparaison. Mais nous cherchons le pire scénario. Rappelez-vous dans une interview s'ils demandent du temps, la complexité là, généralement demander le pire scénario. Mais si vous êtes incertain, vous pouvez généralement demander et pour l'algorithme de recherche. Ils demandent le nombre de comparaisons. Et c'est là qu'on ne pensait pas comparer ici. Comparé ici. Nous comparons ici que nous avons comparé ici quatre comparaisons. C' est généralement ainsi que nous mesurons la complexité temporelle de la recherche d'albums. Combien de comparaisons devons-nous faire ?
4. Lien inférieur et supérieur: Il y a quelques cas spéciaux pour rechercher par exemple. Cherchons un M maintenant et on sait qu'il y en a deux ici. Voyons donc ce que fait l'algorithme était d'abord 0,2. Je égale cinq, et c'est le K Qué est moins que M. Donc nous savons que nous devons regarder le bon côté ici. Donc, nous partageons, ça irait ici, et le point médian va être ici à I égal 8 R est supérieur à M, donc nous savons que nous devons regarder à gauche de son et maintenant nous l'avons contraint à cette partie ici . C' est là que se trouve la partie intéressante. Ensuite, nous vérifions celui-ci ici parce que c'est juste qu'il se trouve être conscient va fonctionner. Nous aurions pu vérifier celui-ci et j'ai dit : Nous le trouvons et nous avons trouvé le M. Donc vous avez trouvé que la recherche de base est bien. Ce sont deux albums là-bas, très près de la recherche qui viennent très souvent tout en implémentant d'autres algorithmes. Ces deux algorithmes sont ce que nous appelons la limite inférieure et la limite supérieure et M est le cas et introduit est inférieur. Bounce dit va me diriger vers le premier endroit où nous les trouverions. Donc, si nous cherchons la limite inférieure d'eux, nous voulons vraiment cet endroit et pas celui-ci. La valeur de la limite inférieure est lorsque vous avez des doublons. Vous savez, vous pouvez pointer vers le 1er 1 Mais aussi la limite inférieure est aussi bonne. Quand tu cherches des choses qui ne sont pas là. Revenons à ça. Tu vois, le cas où on sait qu'il ne voit pas ici, mais ça ne nous dit pas grand-chose. Et si on voulait savoir ? Où verrait-on aller ici ? Quels sont ses voisins les plus proches ? Quelque chose comme Lower Bound nous dit où sont ses voisins les plus proches. Donc, la limite inférieure pour commencer au milieu, commencer ici, puis vérifier ici et puis nous savons ici et ici et sauter sur les offres comment cela est fait. Mais Lower Bound veut nous donner cette position ici parce que c'est là que la mer serait
divisée, et ça finira par nous donner cette position ici. J' égale un parce que la limite inférieure dit spécifiquement Quel est le premier élément, qui n'est pas inférieur à cela ? La valeur B est inférieure à cette valeur, donc ce n'est pas ce que nous voulons que D soit supérieur à cette valeur. C' est donc ce que nous voulons. Cette formulation de pas moins que ce qui était important dans l'affaire M parce qu'il y a Malte, certains d'entre eux. Cela signifie le 1er 1 qui n'est pas inférieur à parce que M n'est pas inférieur à em. Il le laisse correspondre. Donc, cette fonction de borne inférieure est utile pour trouver un endroit dans une liste où un élément pourrait exister s'il n'est pas là ou s'il est là pour vous assurer que vous avez trouvé le 1er 1 Si cela est pertinent, très étroitement lié à Bound inférieure est la Bound supérieure de la ceinture nous dit le premier élément qui est supérieur à celui que nous recherchons. Donc, par
exemple, si vous cherchez la limite supérieure hors d'eux cette fois, nous savons que M est là. Mais nous voulons trouver le point où M n'est plus l'animal correct. C' est là que ça s'arrête ? Donc, la limite supérieure de M veut pointer vers ici. Donc, à cet endroit ici, où nous insérons chose,
c' est le premier élément de la liste qui n'est pas inférieur ou égal ou supérieur à M . Cela veut dire pour tout ce qui pourrait aller après eux. Ceci est plus important ou plus intéressant pour les articles qui ne figurent pas dans la liste. Par exemple, si nous voulons bien savoir, où ma fin va, vous pouvez aussi dire, Eh bien, il va dans ce Donc, pour chercher quelque chose et il est là, la limite supérieure dit. À quel point est, après cet élément, cela est utile pour certains types de tri. Ou si vous voulez insérer un autre AM, vous voulez vous assurer qu'il vient après ceux existants. Vous pouvez également regarder la limite supérieure des choses qui n'existent pas. Donc, comme voir, nous savions que la limite inférieure de C pointait vers le D parce que c'était le 1er 1 qui
n'était pas inférieur à C. Cela se trouve aussi être le 1er 1 qui est plus grand que voir. Donc, dans le cas d'éléments qui n'existent pas, ils ne sont pas ici. Les bornes inférieure et supérieure seront les mêmes parce qu'elles ne sont pas dans la liste. Il va toujours pointer au même endroit dans la classe de tri d'insertion. Nous allons voir pourquoi cela fait une différence pourquoi vous pourriez vouloir utiliser la limite supérieure par rapport à limite
inférieure pour faire un type de tri La limite supérieure est très utilisée lorsque beaucoup d' albums qu'ils essaient de localiser des éléments qui ne sont pas dans la liste essaient juste de trouver un emplacement dans une liste pour quelque chose doit être, même si ce n'est pas là, les
comprendre et être capable de les mettre en œuvre, nous allons vous donner accès à une variété d'autres albums pour vous aider dans beaucoup de codage des entrevues.
5. Code de recherche binaire: J' ai regardé le code maintenant pour la recherche binaire et la borne inférieure et la borne supérieure avant de regarder le segment. Avant de regarder le code, assurez-vous d'essayer cet exercice sur votre propre droite. Votre propre recherche binaire. Traitez les bornes supérieure et inférieure comme des questions bonus. J' aurai un lien vers ce code dans les notes, alors vérifiez aussi. Mais encore une fois comme votre projet, assurez-vous d'écrire ce code d'abord. Effectuez la recherche binaire. Essayez quelques entrées. Faisons quelques cas de test. Assurez-vous que cela fonctionne la variété des entrées et convainquez-vous que vous avez compris ce
dont j'ai parlé dans le segment précédent et que vous pourriez écrire une recherche de vinyle dans une situation d' entrevue. Ok, regardons le code. Donc, dans les fichiers de classe, il y a un P Y principal en Italie. Le python principal a de la richesse et du python, mais il devrait être assez facile à suivre. Quoi qu'il en soit, la partie supérieure de ceci est toute sorte de chaudière juste pour configurer l'environnement python pour les comparables. Une chose savoir sur les comparables. La seule opération de comparaison à utiliser est moins que cela est très commun lors de l'écriture algorithmes pour les bibliothèques standard donc sont comparables seulement besoin de définir une
opération inférieure et rien mawr. Jetons donc un coup d'oeil à l'achat de recherche. Je déplace ça un peu. Ici, nous avons la recherche Byner. Qu' est-ce que l'achat d'une recherche ? Il prend la valeur que nous recherchons et les éléments dans certains un p. Je vois encore cela appelé l'aiguille dans une botte de foin. Cela fonctionne, mais j'aime la valeur dans les articles. Il devrait être assez clair, et il renvoie une fin facultative. Pourquoi ce sont des options parce qu'il peut ne pas trouver les articles qu'il doit être en mesure de retourner aucun. Sinon, il renvoie la position de l'élément qui ont trouvé, qui se compare à la valeur passée dans les 2 premières étapes configurées pour Loop disaient dans
quelle partie de la liste cherchait ? Zéro était le premier, suivant et le long. J' étais un top. Ce sont les meilleurs index exclusivement. Ne vérifiez pas que hors de cela est une plage de codage standard. Nous avons mis en place cela et sa boucle dit ensuite : Tant que le bas est inférieur à élevé, nous continuons à boucler parce que cela signifie que nous avons encore des éléments à vérifier. Comme je l'ai montré dans le tableau blanc, ce que nous devons faire est de regarder la position médiane. Donc, c'est hi moins faible, divisé par deux plus bas le python d'arrimage barre oblique. C' est juste la division de l'énergie, et cela nous donne le point médian entre la plage ont été vérifiés. C' est fait en boucle parce qu'on va le faire à plusieurs reprises. C' est donc le point médian. Et la première vérification a été de dire, est l'élément au milieu inférieur à notre valeur dans ce sens lorsque les points de pivot actuels dans cette province est inférieur ou valeur, cela signifie que toute la moitié laissée hors les éléments ne l'ont pas. Donc, nous sommes dans un décalage vers la moitié droite vers le segment et décalé à droite un demi-segment que nous prenons bas dit il au milieu plus un. Nous savons que mid ne peut pas être la valeur parce que mid était inférieur à la valeur. Donc, au milieu plus un, cela déplace la fenêtre qui cherchait sur la droite. Sinon, si notre valeur est inférieure à la valeur moyenne, alors nous savons que nous sommes trop élevés dans la liste et nous pouvons aller à gauche et c'est là que nous allons vers le bas. Si haut devient milieu moins un et nous savons que milieu ne peut pas être le cirque de l'objet au milieu moins un Si vous mettez juste milieu aussi bien, ça devrait fonctionner, mais ce sera un peu moins efficace. Sinon, nous retournons au milieu. C' est là que c'est important. Là où je l'ai dit, nous n'utilisons que moins que les comparaisons dans la première comparaison. Nous voyons si les éléments milieu est inférieur à la valeur dans la seconde, quand nous le voyons, les valeurs diminuent les éléments milieu semble un peu bizarre. Dans le dernier cas, qu'est-ce que ça veut dire ? Si aucune valeur n'est inférieure à l'autre, cela signifie la même valeur, cela signifie que
c'est la valeur que nous recherchons et que nous pourrions retourner milieu. Nous avons trouvé la valeur que nous recherchons, et si nous n'avons pas trouvé cette valeur, nous n'avons retourné aucune. C' est donc une recherche binaire de base. Je l'ai fait sans Rikers, et je l'ai fait avec une boucle while et il prend le segment haut et bas. Il marche pour que le segment le fractionne en deux à chaque fois en bas du fichier. J' ai fourni un test. Exécutez ceci votre test de travail et de tarte ou juste exécutez directement et je fais quelques tests
de base. Si vous écrivez une guerre complète que vous auriez une plus grande suite de tests, juste donner quelques rudiments. Un point intéressant, J'ai dit pour deux test est ce qui se passe si vous cherchez un et vous dans cette liste, L'air de A dupliqué et le U est dupliqué. Vous pouviez voir les deux années là-dedans. Le problème avec la façon dont j'ai implémenté la recherche binaire dans cet exemple est qu'il
n'y a aucune garantie dont il trouve. Donc, cela par recherche aérienne pour un pourrait être 01 Il pourrait trouver l'une de ces valeurs. Même chose avec l'UE. Vous pourriez avoir huit ou neuf ans. Il pourrait trouver l'une de ces valeurs, et c'est quelque chose que nous allons regarder à la limite inférieure et supérieure. Alors passons à ces
6. Code de liaison inférieur et supérieur: liées à la recherche binaire sont des opérations de limite inférieure et supérieure. Où sont les recherches binaires à la recherche d'un élément particulier ? Les limites inférieure et supérieure recherchant un endroit dans la liste où un élément devrait appartenir, qu'il
soit là ou non, et ils donnent un peu plus de garanties dans une recherche binaire. Alors jetons un coup d'oeil à la limite inférieure à nouveau. La borne inférieure amende la première position de la liste où l'élément de la liste n'est pas
inférieur à la valeur. C' est le premier endroit où il est supérieur ou égal à. Et nous disons pas moins que de nouveau, parce que nous voulons seulement utiliser l'opérateur moins que. Mais c'est la même chose est supérieure ou égale à dans ce cas, donc la borne inférieure A a la même entrée, mais vous remarquez que la sortie est une énergie. Euh celui-ci ne peut pas revenir, et aucun. Ce n'est pas facultatif. Il y a toujours un endroit à moins que quelque chose ne soit. Si ce n'est pas le cas, il pourrait y avoir au milieu. Peut être le début ou la fin, donc il a toujours une valeur. Cette configuration ressemble à la même. Nous commençons avec cette gamme complète, et nous allons le segmenter en deux à chaque fois en cherchant donc le milieu. Donc la leçon abaisse haut et nous cherchons le milieu. Donc maintenant, nous vérifions si les éléments au milieu sont inférieurs à la valeur. Et si c'est le cas, c'est comme la condition que nous avions avant que Well soit si Ban inférieur doit être à la droite de celui-ci . Donc nous disons milieu plus un parce que c'est moins que ça. Nous savons que la limite inférieure est strictement après milieu parce qu'elle doit être supérieure ou égale à . Donc vous êtes moins plus un maintenant il est où quelque chose change de la recherche binaire. Si nous regardons en arrière avec l'autre dans la recherche binaire, nous n'avons pas l Si cela a comparé la valeur à nouveau ici, nous ne le faisons pas. Si ce n'était pas le côté droit, ça doit être le côté gauche. Nous n'avons pas de chemin de retour court. Nous ne pouvons pas identifier la valeur Rechercher au milieu. Nous devons toujours effectuer des recherches exhaustives. Et c'est aussi la raison pour laquelle nous disons que salut est égal au milieu et non au milieu moins un. Parce qu'à ce stade, nous ne savons pas vraiment que le milieu n'est pas la limite inférieure. Cela pourrait être parce que tous les éléments à gauche du milieu pourraient être inférieurs à la valeur en milieu. est peut-être celui qu'on cherche. Par conséquent, nous n'en soustrayons pas un. On dit juste des aigus moins que médium. Et nous continuons à faire ça jusqu'à ce que Lo et Salut soient la même valeur. Je dis la leçon abaisse. Salut. C' est une sorte de technique de codage défensive pour s'assurer que ça ne va jamais, mais ils sont juste qu'ils seront égaux à un moment donné. Donc, nous avons retourné bas à ce moment dans cette limite inférieure, puis trouve la première place dans la liste où les éléments ne sont pas inférieurs à la valeur. Donc, le fond, les cas de test. Si nous regardons les éléments maintenant, si nous prenons la limite inférieure d'un nous avons dit auparavant dans la recherche binaire, nous aurions pu avoir un 01 Mais dans la limite inférieure, il doit nous donner un zéro. Il doit être le premier endroit où il existe dans ce cas, le premier élément de la liste. Et pour vous, vous étiez aussi le 1er 1 ici. La première position est huit. Et donc il y a des doublons est garanti celui qu'il retourne doit toujours être le 1er 1 C'est là
que vous ne seriez pas servi une de cette valeur. Maintenant, le premier test d'un non existant est voir, et ce qui devrait voir les retours pour avoir un B C C serait juste ici, et cela signifie que ce devrait être la position du F, et c'est un trois. Donc, nous avons trouvé les trois et encore avec le Pourquoi le Pourquoi devrait ici et un double zed, que j'ai jeté juste pour obtenir quelque chose à la fin de la liste ? Parce que c'est plus grand que tous. Il devrait apparaître à la fin de la liste, et cela est plus grand qu'une taille de liste, donc c'est un test valide pour cela. Jetons donc aussi un coup d'oeil à la limite supérieure supérieure de la limite supérieure n'est pas tout à fait contraire, limite
inférieure. C' est très lié. Et ce qu'il dit est la première position de cette liste où l'élément est supérieur à la valeur non supérieure ou égale à, mais supérieure à ainsi. C' est une limite supérieure stricte par rapport à la limite inférieure et encore une fois, tout
cela être exprimé en termes de moins que parce que, comme nous l'avons dit, que comparable la seule chose qu'il a à nous soutenir dans moins que ce qui trouvera dans beaucoup des bibliothèques standard. Cette configuration est exactement la même à nouveau. On va mettre en place notre portée de fenêtre et ils vont trouver le point médian. Maintenant, notre première condition varie un peu par rapport aux dernières est qu'au lieu d'aller à droite , ,nous allons d'
abord vers le côté gauche, et c'est-à-dire, si notre valeur est inférieure à l'élément dans le point, nous allons aller du côté gauche. Mais nous ne allons pas en soustraire un, parce que la position où au milieu pourrait en fait être la limite supérieure si tout le reste arrive en fait beaucoup plus bas que lui. Sinon, nous allons du côté droit et nous disons les locaux milieu plus un. Ici, nous pouvons faire un milieu plus un parce que c'est une garantie que la limite supérieure est strictement après le milieu, et nous le faisons jusqu'à ce que le haut soit bas, puis nous retournons bas, et cela nous donne la limite supérieure. Alors regardons les exemples de ce qui se passe là-bas. Donc, vous avez une limite supérieure d'un Où est l'os inférieur d'une limite supérieure était zéro d'un Si est moins que vous diriez juste après A. Et c'est une position à la limite supérieure de est que la position à la limite supérieure de vous est juste après vous à 10. Donc c'est après le huit. Et pour un élément qui n'est pas une liste à voir, la borne supérieure est la même que la borne inférieure car elle ne figure pas dans la liste. Donc, ces deux nous disent où l'insérer dans le seul changement, lorsque les éléments déjà dans la liste, il nous dit de quel côté de lui en raison de le mettre dans. Si nous allons faire des tris d'insertion, vous voudrez généralement utiliser la borne supérieure pour faire un tri stable pour insérer des éléments par la suite dans la liste où diffuse, limite
inférieure. Il déplacerait la liste tout le temps. Et ce n'est pas ce que vous voulez dans ma classe pour trier l'insertion. Je vais parler de la raison pour laquelle la limite supérieure est importante ici est opposée à la limite inférieure. Ils ont à voir avec la source stable
7. Code de recherche binaire de l'autre: revenir à ce problème avec la recherche binaire dans les valeurs dupliquées. Quand j'ai aidé pour ce A dans cette liste, j'ai dit que cela pourrait être une valeur de zéro ou un code Généralement si vous construisez une bibliothèque, ce n'est pas une bonne situation. A avoir. Tu ne veux pas être ambigu. AP ICE. Tu ne veux pas acheter de recherche. Il pourrait retourner 011 influences personne retour zéro. Une autre personne points renvoie un. C' est un mauvais état d'avoir ce type de résultat de pensée dans beaucoup d'air se faufiler dans votre plateforme de code ou différents compilateurs. Donc, ce n'est pas bon d'avoir des choses comme la recherche qui pourraient renvoyer des résultats différents. Ils sont ambigus. Nous voulons avoir un résultat strict dans le cas des doublons. Il est logique de retourner le 1er 1 sur la liste. Si vous faisiez une recherche de couches, lequel trouverez-vous ? Donc, vous pourriez dire bien sont l'optimisation de recherche binaire recherche linéaire ? Dans quel cas le 1er 1 ? A. Elle a retourné zéro le 1er 0 Elle a retourné huit. Alors, comment pouvons-nous faire ça ? L' achat, écrit
un chercheur, ne s'en fout pas. Il ne sait pas lequel il trouve. Il y a donc une autre façon de le faire en utilisant la borne inférieure car la borne inférieure
renvoie toujours le 1er 1 dans la liste si elle est là. Donc, dans le code, j'ai fourni une recherche hors binaire. La principale différence est que s'il y a un doublon dans la liste, cela garantira qu'il retourne. Le 1er 1 et j'ai implémenté est en termes de rebond inférieur. Si vous avez une opération de limite inférieure, vous n'avez pas réellement à influencer la recherche binaire. C' est bon pour une entrevue. Ou, si vous pouviez demander à la personne, puis-je supposer que la limite inférieure existe ? Et vous pouvez éviter la partie problématique de l'écriture de la recherche binaire et simplement utiliser la limite inférieure. Si vous recherchez une valeur particulière, appelez la limite inférieure de la valeur. Cela dit, la première place était que les éléments devraient être insérés dans la liste. Et s'il y a des éléments dans la liste, la première occurrence hors de cela parce que c'est valide même s'il n'était pas la liste. Donc, la première chose que nous vérifions est que si la limite inférieure est supérieure à la longueur d'une liste , c'est l'angle supérieur à. Cela signifie qu'il n'est pas sur la liste car il dit que l'endroit où cet élément existerait est en dehors la liste, donc il ne peut pas être là-dedans. Donc, nous avons rendu Aucun. Si l'élément au prochain retourné est inférieur à la valeur, eh bien, alors ce n'est pas l'élément que nous voulons, donc il ne devrait pas être dans la liste. Si la valeur est inférieure aux éléments présents, vous pouvez retourner, connu aussi, car ce n'est pas le bon élément. Sinon, vous retournez plus bas car il n'est ni moins que dans l'une ou l'autre direction, inférieur ou supérieur à ce qui signifie qu'il est égal. Et c'est ainsi que vous utilisez la limite inférieure pour trouver un élément dans une liste.