¿Existe una estructura de datos ordenada que se pueda insertar en O (logn) y buscar en O (1)?

Ordenar en O (logN):

El árbol se puede usar para ordenar datos en tiempo O (logN). En realidad, es el árbol de búsqueda binario el que inserta el elemento de manera tal que todos los elementos se ordenan primero. Cuesta O (logN) insertar un elemento en el árbol y, por lo tanto, ese costo es logN.

Usando el recorrido previo o posterior al pedido, podemos tener datos ordenados.

Busque en O (1):

El mapa hash se utiliza para almacenar datos. Básicamente cuenta el valor de cada valor llamado clave y almacena los datos según la clave. Si el mapa hash es relativamente grande y los números para almacenar son pequeños y la función de generación de claves es lo suficientemente buena, es posible que encontremos datos en el tiempo O (1).

Las bibliotecas para mapas están disponibles principalmente en todos los idiomas que utilizan su función integrada para generar claves a partir de datos.

Ambos son escenarios generales. Por lo tanto, no siempre es posible que ordenar y buscar ambos sea tan rápido como esto.

Probablemente. Depende de lo que necesite hacer con los datos ordenados y qué datos esté almacenando.

Solo usa dos estructuras de datos. Nada le impide construir una estructura de datos a partir de otras dos estructuras de datos. En este caso, una simple tabla hash (pares clave-valor) o conjunto y alguna estructura de datos para almacenar datos ordenados harían el trabajo. Puede insertar en ambos en O (log N), y es O (1) hacer una búsqueda en una tabla hash o conjunto.

Sí, pero.

Las tablas de hash son O (1) de inserción y búsqueda hasta que haya una colisión. En ese momento, hay varias opciones sobre cómo se comporta la tabla hash.

  1. Expande la mesa. Desafortunadamente, esto parece funcionar para O (n ^ 2) en promedio para las inserciones. Sigue siendo O (1) para búsquedas y eliminaciones.
  2. Cubos Los cubos serán lineales o un árbol binario. El comportamiento general para n suficientemente grande se comporta como un árbol binario O (n * lg (n)) para todo.
  3. Moverse al siguiente lugar abierto. Esto se vuelve lineal para inserciones y búsquedas. Si hay algún otro elemento en el lugar, entonces debe iniciarse una exploración hasta que se encuentre el elemento o se encuentre un lugar vacío. O (n) para inserciones y búsquedas hasta que la tabla esté llena, en cuyo punto la tabla debe expandirse. Esto tiende a hacer insertos O (n ^ 2). Las eliminaciones son un problema porque tienes que encontrar todas las coincidencias de hash y moverlas …

Sí, puede usar Boost MultiIndex, usando dos índices como:

indexed_by <
order_non_unique <…>
hashed_unique <…>
>

¡Creo que el montón es la respuesta! Si desea obtener un número máximo o mínimo en 0 (1), se usará el montón

Además del montón, puede buscar FUNCIONES HASH, estas funciones pueden recuperar e insertar aproximadamente en O (1)

Sí, puedes combinar una tabla hash y un árbol.

La tabla hash proporciona búsqueda O (1)

El árbol proporciona claves ordenadas. El árbol, cuesta O (logn) inserto.

More Interesting

¿Cómo funciona el algoritmo de creación de coincidencias dota 2?

¿Cómo funciona la revisión gramatical en Microsoft Word?

Algoritmos: ¿Qué sucede cuando un usuario crea una matriz de tamaño -100, qué sucede en la memoria?

¿Cuáles son los principales algoritmos en visión artificial?

Cómo escribir un algoritmo para continuar esta secuencia: x, y, xx, xy, yx, yy, xxx

¿Cómo podrías escribir un programa que ingrese un número entero positivo N y genere el número de Fibonacci F2N?

¿Cuál sería un ejemplo de un problema de programación que sería difícil si no fuera posible sin el uso de array?

¿Cuál es el mejor algoritmo de extracción en primer plano de escenas dinámicas, donde el fondo también puede cambiar (debido a las vibraciones de la cámara o los detalles en movimiento)?

¿Cuál es la diferencia entre un algoritmo de autoaprendizaje y un algoritmo de IA?

¿Mattermark está utilizando datos para entrenar algoritmos de aprendizaje automático y modelos predictivos que pueden buscar / identificar nuevas empresas potenciales en una etapa temprana que tienen el potencial de interrumpir la industria?

¿Qué es la inserción táctica?

¿Por qué el NN recurrente agrega el paso T-1 a la entrada actual pero se concatena?

¿Cuál es el método computacionalmente más eficiente para agregar todos los elementos de una matriz (o matriz)?

Cómo resolver el problema de los módems (SPOJ.com - Problema EC_MODE) en SPOJ

Cómo aprender estructuras de datos y algoritmos lo suficientemente buenos como para conseguir un trabajo en 10 meses