Je me suis souvenu que le segment de mémoire peut être utilisé pour rechercher si un élément est dedans ou non avec une complexité de temps O (logN). Mais soudain, je ne peux pas obtenir les détails. Je peux seulement trouver getmin supprimer ajouter et ainsi de suite.Rechercher un élément dans un segment
Quelqu'un peut-il donner un indice?
Est-ce entièrement vrai? Prenez le tas suivant comme exemple: '[5, 4, 1, 3]' Si je recherche ce tas (sous la forme d'un tableau) pour le numéro 3, je vais frapper 1 et, selon votre algorithme, arrêter ici conclure qu'il n'est pas dans le tas quand il est en fait? Est-ce que j'ai râté quelque chose? –
Avec l'optimisation, le sous-arbre avec la racine 1 ne sera pas recherché plus loin, car il ne peut pas contenir 3. 3 est dans un autre sous-arbre. Je suis d'accord qu'une recherche linéaire (par opposition à une recherche récursive) peut donner une mauvaise réponse. –
@JamesSanders C'est vrai dans tous les cas, même pour une recherche linéaire. L'arbre binaire complet aura la valeur 3 comme un enfant à gauche de 4, et 1 sera à la même hauteur que 4. Même si vous faites une recherche linéaire, l'optimisation dit que 4> 3, vous devez donc, au minimum , comparez les enfants de 4, en plus de tous les autres éléments à la même hauteur que 4. – lee