tipos tda lista libro estructura ejemplos datos clasificacion caracteristicas abstractos data-structures

data structures - tda - Usos prácticos de diferentes estructuras de datos



tipos de datos abstractos en java (9)

A continuación se enumeran los sitios donde se puede comprender el uso real de la estructura de datos y el algoritmo Hacker Earth

Hacker Rango

chef de código

Se habla mucho sobre estructuras de datos, pero no puedo encontrar una lista simple de estructuras de datos y su uso práctico. Estoy tratando de estudiar para una entrevista y creo que esto me ayudaría, junto con muchos otros. Estoy buscando algo como esto:

Estructura de datos - Ejemplo / Usado para

Tabla Hash: búsqueda rápida de datos ... luego da un ejemplo

Array - ...

Árbol binario - ...

Si hay un recurso como este en alguna parte, házmelo saber.

¡Gracias!

EDITAR: Quiero decir que la wikipedia es buena y todo, pero en la mayoría de las páginas no enumeran los usos prácticos. Estoy buscando algo más que eso.


Creo que es más sensato simplemente estudiar las características de las estructuras de datos.

En función del escenario que le dé su entrevistador, elija el que corresponda.

Digo mentiras a las personas que afirman que la ingeniería de software y la programación no son creativas.


Cualquier clasificación de varias estructuras de datos estará al menos parcialmente vinculada al contexto problemático. Sería útil aprender a analizar el rendimiento en tiempo y espacio de los algoritmos. Normalmente, se usa "notación O grande", por ejemplo, la búsqueda binaria está en tiempo O (log n), lo que significa que el tiempo para buscar un elemento es el registro (en la base 2, implícitamente) del número de elementos. Intuitivamente, dado que cada paso descarta la mitad de los datos restantes como irrelevantes, duplicar el número de elementos aumentará el tiempo en 1 paso. (La búsqueda binaria escala bastante bien.) El rendimiento del espacio se refiere a cómo crece la cantidad de memoria para conjuntos de datos más grandes. Además, tenga en cuenta que la notación de O grande ignora los factores constantes: para los conjuntos de datos más pequeños, un algoritmo O (n ^ 2) puede ser aún más rápido que un algoritmo O (n * log n) que tiene un factor constante más alto. Algoritmos complejos a menudo tienen más trabajo por hacer en el arranque.

Además del tiempo y el espacio, otras características incluyen si una estructura de datos está ordenada (árboles y skiplists están ordenados, tablas hash no), persistencia (los árboles binarios pueden reutilizar punteros de versiones anteriores, mientras que las tablas hash están modificadas en su lugar), etc.

Si bien tendrá que aprender el comportamiento de varias estructuras de datos para poder compararlas, una manera de comprender por qué difieren en el rendimiento es estudiar detenidamente algunas. Sugiero que comparen listas de enlaces únicos, árboles de búsqueda binarios y listas de omisiones , todas las cuales son relativamente simples, pero tienen características muy diferentes. Piense en cuánto trabajo se necesita para encontrar un valor, agregar un nuevo valor, encontrar todos los valores en orden, etc.

Hay varios textos sobre el análisis de algoritmos / rendimiento de estructura de datos que las personas recomiendan, pero lo que realmente les hizo tener sentido para mí fue aprender OCaml. Tratar con estructuras de datos complejas es el punto fuerte de ML, y su comportamiento es mucho más claro cuando se puede evitar punteros y administración de memoria como en C. (Sin embargo, aprender OCaml solo para entender las estructuras de datos es casi el camino más largo :))


El excelente libro " Algorithm Design Manual" de Skienna contiene un enorme repositorio de Algoritmos y estructura de datos.

Para toneladas de problemas, las estructuras de datos y el algoritmo se describen, comparan y discuten el uso práctico. El autor también proporciona referencias a las implementaciones y los documentos de investigación originales.

El libro es ideal para tenerlo en su escritorio si busca la mejor estructura de datos para resolver su problema. También es muy útil para la preparación de entrevistas.

Otro gran recurso es el diccionario de estructuras de datos y algoritmos NIST .


Encontré la lista en una pregunta similar, previamente en :

Tabla hash: se utiliza para buscar datos rápidamente: tabla de símbolos para compiladores, indexación de bases de datos, cachés, representación de datos únicos.

Trie - diccionario, como uno que se encuentra en un teléfono móvil para autocompletar y revisar la ortografía.

Árbol de sufijos: búsquedas rápidas de texto completo utilizadas en la mayoría de los procesadores de texto.

Pila: operación de deshacer / rehacer en procesadores de texto, evaluación de expresiones y análisis de sintaxis, muchas máquinas virtuales, como JVM, están orientadas a la pila.

Colas: investigación de transporte y operaciones en la que se almacenan y retienen varias entidades para procesarlas más tarde, es decir, la cola realiza la función de un búfer.

Colas de prioridad: programación de procesos en el kernel

Trees - Parsers, Sistema de archivos

Árbol Radix - Tabla de enrutamiento IP

Árbol BSP: gráficos por computadora 3D

Gráficos: conexiones / relaciones en sitios de redes sociales, enrutamiento, redes de comunicación, organización de datos, etc.

Heap - Asignación de memoria dinámica en lisp

Esta es la respuesta publicada originalmente por RV Pradeep

Algunos otros enlaces menos útiles:

Las aplicaciones solo se enumeran para algunas estructuras de datos

No se enfoca en la aplicación, por un buen resumen y relevante



Estoy en el mismo barco que tú. Necesito estudiar para entrevistas técnicas, pero memorizar una lista no es realmente útil. Si tiene 3-4 horas de sobra y desea hacer una inmersión más profunda, le recomiendo que consulte

mycodeschool
Miré en Coursera y otros recursos, como blogs y libros de texto, pero me parece que no son lo suficientemente exhaustivos o en el otro extremo del espectro, demasiado denso con las terminologías de ciencia informática prerrequisito.

El tipo en el video tiene un montón de conferencias sobre estructuras de datos. No importa los dibujos tontos, o el ligero acento en absoluto. Necesita comprender no solo qué estructura de datos seleccionar, sino algunos otros puntos a considerar cuando la gente piensa acerca de las estructuras de datos:

  • pros y contras de las estructuras de datos comunes
  • por qué cada estructura de datos existe
  • cómo funciona realmente en la memoria
  • preguntas / ejercicios específicos y decidir qué estructura usar para la máxima eficiencia
  • Lúcida Gran explicación 0

También publiqué notas sobre github si estás interesado.


Pocos más Aplicación práctica de estructuras de datos

Árboles rojo-negro (Usados ​​cuando hay inserción / eliminación frecuente y pocas búsquedas) - K-mean Clustering usando el árbol rojo negro, Bases de datos, Base de datos simple, buscando palabras dentro de diccionarios, buscando en la web

Árboles AVL (más búsqueda y menos inserción / eliminación) - Análisis de datos y minería de datos y las aplicaciones que implican más búsquedas

Min Heap - Algoritmos de agrupamiento


Según mi comprensión, la estructura de datos es cualquier información que resida en la memoria de cualquier sistema electrónico que pueda ser administrado eficientemente. Muchas veces es un juego de memoria o un acceso más rápido a los datos. En términos de memoria nuevamente, se realizan intercambios con la administración de datos en función del costo para la compañía de ese producto final. Administrado eficientemente nos dice cómo se puede acceder a los datos según los requisitos principales del producto final. Esta es una explicación de alto nivel, pero las estructuras de datos son temas vastos. La mayoría de los entrevistadores se sumergen en las estructuras de datos que pueden permitirse discutir en las entrevistas según el tiempo que tengan, que son listas vinculadas y temas relacionados.

Ahora, estos tipos de datos se pueden dividir en primitivos, abstractos, compuestos, basados ​​en la forma en que se construyen y se accede lógicamente.

  • las estructuras de datos primitivas son bloques de construcción básicos para todas las estructuras de datos, tienen una memoria continua para ellas: boolean, char, int, float, double, string.
  • Las estructuras compuestas de datos son estructuras de datos compuestas por más de un tipo de datos primitivos. clase, estructura, unión, matriz / registro.
  • los tipos de datos abstractos son tipos de datos compuestos que tienen forma de acceder a ellos de manera eficiente, lo que se denomina algoritmo. Según la forma en que se acceda a los datos, las estructuras de datos se dividen en tipos de datos lineales y no lineales. Las listas enlazadas, stacks, colas, etc. son tipos de datos lineales. montones, árboles binarios y tablas hash, etc. son tipos de datos no lineales.

Espero que esto te ayude a sumergirte.