Je cherchais à travers le travail possible pour faire la recherche binaire dans Erlang et j'ai trouvé http://ruslanspivak.com/2007/08/15/my-erlang-binary-search/ Mais je me demandais si la solution dans le blog s'exécute dans O (lg n). Maintenant, puisque la récurrence pour la recherche binaire est: T (n) = T (n/2) + c qui me donne un temps d'exécution de O (lg n).Recherche binaire dans Erlang dans lg (n) temps
Depuis un tableau C vous avez le pouvoir d'accéder à n'importe quel élément en O (1) temps. Mais dans erlang si l'accès au milieu de la liste prend le temps cn, alors la recherche binaire s'exécute en temps global linéaire aussi pauvre que la recherche linéaire.
Je suis tombé sur des listes: nth/2 BIF pour trouver le nième élément dans une liste mais je ne suis pas sûr de son temps d'exécution.
Un commentaire?
C'est faux. Le module Array est un tuple très plat avec un facteur de branchement d'environ 12, choisi pour être un compromis entre le temps de réécriture et le temps d'accès. Le temps d'accès pour un seul élément est toujours O (log N). Les structures destructives telles que les tables ETS doivent permettre un accès constant à l'heure, en fonction des données et du type de table, mais cela ajoute le temps de copie entre la table et tout processus Erlang. Sinon, un binaire ('<<" some_binary ">>') peut permettre quelque chose qui ressemble à de l'arithmétique de pointeur et les tuples ont aussi une complexité O (1) pour l'accès aux données. –