Estaba buscando a través de posibles soluciones para hacer búsquedas binarias en Erlang y encontré http://ruslanspivak.com/2007/08/15/my-erlang-binary-search/ Pero me preguntaba si la solución en el blog se ejecuta en O (lg n). Ahora, dado que la recurrencia para la búsqueda binaria es: T (n) = T (n/2) + c, lo que me da un tiempo de ejecución de O (lg n).Búsqueda binaria en Erlang en lg (n) tiempo
Dado que en una matriz C tiene el poder de acceder a cualquier elemento en el tiempo O (1). Pero en erlang si acceder al medio de la lista lleva cn tiempo, entonces la búsqueda binaria se ejecuta en tiempo general lineal tan pobre como la búsqueda lineal.
Encontré listas: nth/2 BIF para encontrar el enésimo artículo en una lista, pero no estoy seguro de su tiempo de ejecución.
¿Algún comentario?
Esto está EQUIVOCADO. El módulo Array es un árbol de tuplas muy plano con un factor de bifurcación de aproximadamente 12, elegido como un compromiso entre el tiempo de reescritura y el tiempo de acceso. El tiempo de acceso para un solo elemento sigue siendo O (log N). Las estructuras destructivas, como las tablas ETS, deberían permitir el acceso constante en el tiempo, según los datos y el tipo de tabla, pero esto agrega la sobrecarga de copiar entre la tabla y cualquier proceso de Erlang. De lo contrario, un binario ('<<" some_binary ">>') puede permitir algo que se parece a la aritmética del puntero y las tuplas también tienen complejidad O (1) para acceder a los datos. –