¿Cómo la elección incorrecta de las estructuras de datos hace que un programa sea ineficiente?

Si de hecho.

déjame tomar un minuto y explicarte con una analogía.

Imagínese, parado en la cola ( FIFO – Primero en entrar , primero en salir) para el chequeo médico. El administrador cambia el plan para enviar personas desde el último ( LIFO – Last In First Out), de repente todo estará en caos.

De repente, el paciente con una condición crítica entra. El médico lleva al paciente a la sala de emergencias. ( Cola de prioridad )

Cola

Apilar

Cola prioritaria

Puede costar una vida, si las cosas no están bien planificadas u organizadas. Lo mismo va para la programación.

La eficiencia no se trata solo de completar el programa de corta duración. Las prioridades y el uso de la memoria también deben ser considerados.

Notas

———

10 de noviembre de 1999: Error de Matemática Métrica Misión de Meteorología de Marte Muffed

Fuente de imagen

Google

Tomemos un ejemplo de dos estructuras de datos: matriz y pila

Supongamos que debe escribir un programa que obtenga datos dinámicamente de cualquier ubicación en el almacenamiento. Empujemos 500 conjuntos de datos en cada almacenamiento.

Ahora busquemos los datos 350:

Con la estructura de datos de matriz, puede acceder a cualquier ubicación en tiempo constante O (1); La instrucción sería print (array [350]) y los datos en el índice 350 se imprimirían inmediatamente.

Ahora con la estructura de datos de la pila, necesita hacer estallar todos los datos de la ubicación 0 a 349 antes de poder acceder a la impresión de datos 350 (pop ()) ; Esto implica que el tiempo para acceder a los datos en la estructura de datos de la pila es proporcional a la ubicación de los datos.

Digamos que toma 1 segundo acceder a cada dato, eso significa que tomará 351 segundos acceder a los datos 350 en el almacenamiento de la pila, es decir, se ejecuta en tiempo lineal O (n).

Con nuestro ejemplo, la estructura de datos de la matriz solo tomaría un segundo para acceder a los datos 350, pero la estructura de los datos de la pila tardaría 351 segundos. ¿Qué pasaría si tenemos 100000 conjuntos de datos?

Cada estructura de datos tiene sus pros y sus contras, deberá verificar los requisitos de su programa antes de elegir una estructura de datos.

More Interesting

¿Cuál es el papel de la memoria de montón?

¿Debería entrenarme para implementar estructuras de datos y algoritmos, excepto los simples programas tipo 'Hola mundo'?

Cómo devolver una matriz multidimensional utilizando dos parámetros en C ++

Dado un gran diccionario de N frases cortas (1 o 2 términos) y una gran porción de texto, ¿puedo encontrar de manera eficiente las coincidencias para esas frases en el texto en tiempo sub-N, mientras perdono * los pequeños errores?

¿Qué enfoque debería usarse para resolver esta pregunta sobre hackerrank?

¿Cuáles son algunos algoritmos interesantes que no tienen implementación conocida hasta la fecha?

¿Cómo encuentra Google Play las subcadenas más populares en un conjunto de revisiones?

¿Cuál es la mejor manera de enseñarme a resolver problemas con algoritmos en Java Script? Ese es mi problema número uno hasta ahora. Soy un principiante, obviamente.

¿Vale la pena pagar 6 x $ 49 por una estructura de datos y especialización de algoritmos en Coursera?

¿Cuál es el uso práctico de los árboles de búsqueda binarios?

¿Cómo funciona LSH, 'hashing local sensible', para calcular el valor de hash?

¿La complejidad de los algoritmos de clasificación está relacionada con la cantidad de suposiciones que hago? ¿Por qué?

¿Cuál es la ecuación general para calcular la probabilidad de encontrar una cadena de longitud N en una cadena M más larga de caracteres aleatorios, cada uno elegido de {AZ}?

¿Cuál es uno de tus problemas favoritos que has encontrado en mecánica / dinámica clásica?

Cómo encontrar las rutas que cubren todos los vértices dados (también se conocen el vértice inicial y final) en un gráfico cuyos bordes tienen peso y dirección