¿Cómo ayuda la selección de estructuras de datos apropiadas para diseñar mejores algoritmos?

Las estructuras de datos son en sí mismas colecciones de datos. Durante la ejecución de cualquier algoritmo dado, usted opera en una cantidad dada de datos, ya sean variables individuales o grandes colecciones.

La respuesta a su pregunta radica en la interacción con estas colecciones. Para cualquiera de ellos, debe poder agregar nuevos elementos y leer los elementos existentes de la colección (como mínimo). La naturaleza de estas inserciones y lecturas hace que ciertos algoritmos sean más fáciles de implementar.

Por ejemplo, la naturaleza LIFO de las pilas facilita una especie de “memoria a corto plazo” que le permite recordar instantáneamente (como en O (1)) qué fue lo último que almacenó en él. Esto facilita ciertos algoritmos de navegación para laberintos, o para emular la recursión (de hecho, ¡la recursión real usa una pila!).

Tener la estructura de datos correcta que le permite obtener fácilmente la información que necesita en el momento adecuado, hace que la escritura de algoritmos sea mucho más fácil.

La eficacia de un programa se mide analizando la complejidad del espacio y el tiempo. Cómo reacciona el código en el peor de los casos. Las estructuras de datos juegan un papel importante en el análisis de la complejidad del código. Después de analizar la complejidad, se elige el mejor algoritmo que implica menos tiempo y espacio.

Ejemplo:

Supongamos que está diseñando una aplicación que recibe datos de una fuente (digamos una cuadrícula de datos) y luego los almacena en una estructura de datos. Los datos que provienen de la estación GRID de datos tienen la forma de dígitos ordenados. Los datos ordenados pueden estar en orden ascendente o descendente.

Al usar el montón puede conocer el elemento mínimo en O (1) que es rápido y eliminar un elemento requiere O (n) veces, que es bastante alto. Si está diseñado de otra manera, no puede hacer ambas cosas. Por lo tanto, se recomienda un árbol de búsqueda binario que le permite buscar elementos arbitrarios fácilmente. 🙂

More Interesting

¿Hay un libro que enseñe algoritmos del nivel 0 a los algoritmos de codificación?

Cómo aprender a implementar algoritmos de aprendizaje automático

¿Qué es un árbol binario?

Cómo implementar un algoritmo usando la recursividad para encontrar el módulo de esta serie

Los números ny (n + 2) son dos números que difieren en 2. ¿Cuál es el valor medio de estos dos números?

¿Cómo debo usar el libro Introducción a los algoritmos de Cormen de manera efectiva? ¿Es mejor elegir un tema que haya encontrado en algún lugar de la programación competitiva y leer un algoritmo relacionado con eso o revisarlo de principio a fin?

¿Podría haber estándares de cifrado que descansen en un problema NP-hard distinto de la factorización entera?

¿Por qué el hashing geométrico es más eficiente que usar una matriz indexada de las coordenadas de los puntos característicos?

¿Cuáles son algunas de las preguntas famosas al calcular los caminos más cortos (gráficos) usando Dijkstra's, DAG y Bellman-Ford?

¿Cuáles son algunos algoritmos favoritos que los usuarios de Quora crearon por sí mismos?

15 personas se sentarán en una fila de 15 sillas. ¿Cómo calculo cuántos planes de asientos se pueden hacer, donde dos planes de asientos se consideran iguales si dos planes comparten cuádruples adyacentes? o ¿Cómo puedo crear un algoritmo eficiente para encontrar límites inferiores para 15 o menos personas?

¿Cómo eliminará elementos de manera eficiente mientras itera una Colección?

Cómo resolver este problema usando árboles de segmentos

¿Por qué hay una necesidad de matrices dinámicas si tenemos matrices de longitud variable?

¿Qué algoritmo es mejor para una variante 4 * 4 * 4 * 4 del último dedo del pie tic-tac considerando un límite de tiempo de 15 segundos?