Dada una serie de enteros, ¿pueden la consulta media y la actualización ser tiempo sublogarítmico?

Tal vez, pero no estrictamente con comparaciones. Si puede hacerlo mejor que logarítmico en el modelo de comparación, entonces puede hacer una clasificación de comparación mejor que el tiempo O (n log n).

Ilustraré cómo podemos usar esto para ordenar. Digamos que queremos ordenar, 2, 3, 1. Inicializamos nuestra estructura de datos mediana para

[matemáticas] – \ infty, – \ infty, 2, 3, 1 [/ matemáticas]

La mediana es 1, el elemento más pequeño. Ahora llamamos actualizar y cambiar uno de los [math] – \ infty [/ math] a [math] + \ infty [/ math].

[matemáticas] + \ infty, – \ infty, 2, 3, 1 [/ matemáticas]

Ahora la mediana es 2, el segundo elemento más pequeño.

Ahora seguimos haciendo esto, actualizando [math] – \ infty [/ math] a [math] \ infty [/ math] y luego obteniendo la mediana; la enésima vez obtendremos el enésimo elemento más pequeño, lo que nos permitirá ordenar la matriz.

Este es un número lineal de actualizaciones y consultas medianas, cada una sublogarítmica, que en total sería una clasificación [matemática] o (n \ log n) [/ matemática].

Si estos enteros son pequeños, pruebe con un árbol Van Emde Boas.

Esta estructura de datos admite la consulta del predecesor / sucesor de un elemento en [math] O (\ log \ log U) [/ math] time, donde [math] U [/ math] es el tamaño del universo (por ejemplo, si sus números son enteros de 64 bits, entonces [math] U [/ math] sería [math] 2 ^ {64} [/ math]).

Luego puede mantener la mediana con [matemática] O (1) [/ matemática] llamadas sucesoras / predecesoras por actualización (dividirla en una eliminación y una inserción) para un tiempo de ejecución general de [matemática] O (\ log n) [/ matemáticas] por consulta.

Te señalaré la dirección correcta en lugar de dar la solución completa. Hay un algoritmo nlogn que usa dos montones que encuentra la mediana de una secuencia de números a medida que los lee. Modifique eso para que se incorpore la operación de actualización. Es en línea y de naturaleza logarítmica. También la consulta es o (1). Aquí está el enlace.
http://www.geeksforgeeks.org/med
Si está atrapado o no entiende nada, ¡no dude en comunicarse! 🙂 Feliz codificación.

More Interesting

¿Cuánto cuestan las preguntas formuladas en la entrevista relacionadas con el perfil del trabajo? ¿Preguntas sobre estructuras algorítmicas y de datos especialmente?

¿Cuáles son las preguntas que se hacen en las entrevistas con desarrolladores PLSQL para personas con experiencia?

¿Es extraño que una empresa envíe un correo electrónico a todos los solicitantes como grupo (no bcc), eliminando así la privacidad en el proceso de solicitud?

¿Cuáles son los temas en mecánica de los cuales se hacen preguntas en la entrevista NPCIL?

¿Cómo multiplicaría dos polinomios que tienen un grado de 16 y 17 usando solo 17 multiplicaciones grandes?

Cómo aprender a programar y desarrollar un interés en escribir códigos

¿Cómo aprovechar al máximo el rechazo de una empresa de software?

¿Cuál es la mejor manera de prepararse para las entrevistas de Google, Amazon, Facebook, Oracle y Microsoft?

No he recibido respuesta 2 meses después de una entrevista en una empresa de alta tecnología. ¿Tengo alguna posibilidad de conseguir el trabajo?

¿Por qué el libro de Gayle Laakmann McDowell Cracking the Coding Interview tiene más éxito en India que en otros lugares?

Dada una cadena, ¿cómo la dividimos en el menor número posible de palíndromos de manera eficiente?

¿Cuánto tiempo debería permitirme resolver un problema * difícil * de Leetcode?

¿Cuál es la mejor manera de prepararse para la entrevista de Amazon, cuando todos son nuevos en la codificación?

¿Importa la experiencia en la programación de entrevistas?

¿Cómo es el proceso de entrevista en Shopify para ingenieros de software?