2010-08-18 2 views
1

Est-ce O (n log n) ou O (log n)?Quelle est la complexité d'une liste circulaire à double liaison utilisant la recherche binaire?

+0

@Frustrated - Pourquoi avez-vous tagué ceci avec «devoirs»? Saif dit [ici] (http://stackoverflow.com/questions/2326831/a-list-of-java-errors-and-warnings/2326876#2326876) qu'il développe une traduction de Java en arabe, pas exactement un étudiant Tâche de niveau –

+0

@reemrevnivek: Je l'ai étiqueté 'devoirs 'parce qu'il ressemble beaucoup à une question de devoirs: pas de contexte du problème, pas d'explication de * pourquoi * il veut faire une recherche binaire en utilisant une liste circulaire doublement chaînée, et il * regarde * Comme les questions de devoirs que j'avais reçus et vu d'autres recevoir. @Saif: Désolé si ce n'était pas des devoirs, mais il en avait l'apparence. – FrustratedWithFormsDesigner

+0

@Frustrated: c'est bien. En fait j'étais curieux et je n'y pensais pas, on m'avait déjà enseigné (pas un devoir cependant: P) que c'était inefficace mais je pensais pourquoi serait-ce si j'avais utilisé des pointeurs cachés, mon mal pour ne pas y penser? bien que. – Saif

Répondre

4

Je vais dire que ce n'est pas O (log n) car les recherches binaires ne fonctionnent pas bien sur les listes chaînées - vous n'avez pas un accès aléatoire efficace.

Si vous avez vraiment essayé de faire une recherche binaire, cela prendrait des étapes O (log n), mais à chaque étape, vous avez besoin d'une traversée O (n) pour accéder à l'élément désiré. Donc vous pouvez dire que c'est O (nlog (n)).

Vous devriez simplement faire une recherche linéaire O (n) à la place.

+2

Vous n'avez * aucun * accès aléatoire; tout l'accès est linéaire. Mais, oui, je suis d'accord avec votre réponse. –

0

La recherche binaire nécessite un accès aléatoire, ce qui n'est pas possible dans une liste chaînée. Vous êtes bloqué avec une recherche linéaire O (n).

Questions connexes