40 votes

Pourquoi utiliser la recherche binaire s'il existe une recherche ternaire?

J'ai récemment entendu parler de recherche ternaire dans laquelle nous divisons un tableau en 3 parties et comparons. Ici, il y aura deux comparaisons mais cela réduira le tableau à n / 3. Pourquoi les gens ne l'utilisent-ils pas autant?

42voto

Borealid Points 35075

En fait, les gens utilisent des arbres k-ary pour k arbitraires.

C'est cependant un compromis.

Pour trouver un élément dans un arbre k-aire, vous avez besoin d'environ k * ln (N) / ln (k) opérations (rappelez-vous la formule de changement de base). Plus votre k est grand, plus vous avez besoin d'opérations globales.

L'extension logique de ce que vous dites est "pourquoi les gens n'utilisent-ils pas un arbre N-aire pour N éléments de données?". Ce qui, bien sûr, serait un tableau.

26voto

Akusete Points 4597

Une recherche ternaire vous donnera toujours le même temps de recherche de complexité asymptotique O (log N) , et ajoute de la complexité à la mise en œuvre.

Le même argument peut être dit pour pourquoi vous ne voudriez pas une recherche quad ou tout autre ordre supérieur.

25voto

Michael Burr Points 181287

Rechercher 1 milliard (1 milliard - 1 milliard de dollars US) d'éléments triés prendrait en moyenne environ 15 comparés à la recherche binaire et environ 9 comparés à une recherche ternaire - ce qui n'est pas un avantage énorme. Et notez que chaque "comparaison ternaire" peut impliquer 2 comparaisons réelles.

8voto

supercat Points 25534

La seule façon d'un ternaire de recherche peut être plus rapide qu'une recherche binaire est si un 3-way partition détermination peut être fait pour moins de 1.55 fois le coût d'un 2-way comparaison. Si les articles sont stockés dans un tableau trié, le 3-way de la détermination en moyenne à une valeur de 1,66 fois plus cher que le 2 sorte de détermination. Si les informations sont stockées dans un arbre, cependant, le coût d'extraction de l'information est relativement élevé par rapport au coût de comparer, et de la localité de cache signifie que le coût de hasard récupérer une paire de données n'est pas bien pire que le coût de récupérer une donnée, un ternaire ou n-chemin de l'arbre peut améliorer grandement l'efficacité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X