¿Qué son las estructuras de datos y por qué las usamos? ¿Cuál es su relación con los algoritmos?

Las estructuras de datos existen para estructurar y organizar los datos de una manera que permita buscarlos de una manera particular en menos de un tiempo lineal.

Digamos que tienes una lista de nombres. Por un momento, imagina que la lista es física. Es una hoja de papel, tal vez un libro si se hace grande. Los nombres en la lista no están en ningún orden en particular. ¿Cómo buscarías el nombre “Adam Smith”? Tendría que examinar la lista y ver todos los nombres. No tiene otra opción, ya que no sabe nada sobre dónde puede aparecer Adam Smith en su lista. Esa sería la vida sin estructuras de datos.

Simplemente mirar a través de la lista funciona bien cuando la lista solo tiene 20 nombres. ¡Pero imagínese si un directorio telefónico de toda la ciudad estuviera organizado de la misma manera! Nunca encontrarás nada en una cantidad de tiempo práctica. Para todos los efectos, el directorio sería inutilizable.

Entonces, a la gente se le ocurrió una idea diferente. Dijeron: “oye, clasifiquemos los nombres alfabéticamente”. Esto permite utilizar un algoritmo eficiente llamado búsqueda binaria. Puede pensar que el nombre suena elegante, pero ya sabe cómo hacerlo.

1. Abra el directorio en su punto medio (abra la página central) y mire el nombre allí.

2. Ahora sabe si el nombre que está buscando aparece antes o después del nombre que ve (a menos que lo vea allí mismo, en cuyo caso ya terminó). Si antes, su nombre está en la primera mitad de la lista. Si después, su nombre está en la segunda mitad.

3. Repita su búsqueda en la mitad relevante de la lista.

Este cambio estructural de cómo se organizaron los nombres ha hecho posible que los nombres se encuentren con bastante rapidez incluso en una gran colección de nombres . Con cada nombre que miramos, reducimos a la mitad las posibles ubicaciones de lo que estamos buscando. Matemáticamente, esto significa que podemos encontrar un nombre mirando aproximadamente [math] \ log_2 N [/ math] nombres, donde [math] N [/ math] es el número total de nombres. Tenga en cuenta que la búsqueda de un nombre en la lista desordenada habría requerido buscar los nombres [math] N [/ math] en el peor de los casos, y que [math] \ log_2 N << N [/ math] para grandes [math] N [/mates].

Lo anterior es una estructura de datos muy simple. Es tan simple que muchos programadores ni siquiera lo consideran una estructura de datos. Se llamaría una “matriz ordenada”. Ahora, resulta que si bien una matriz ordenada a veces es una buena estructura de datos, tiene muchas deficiencias, por lo que no hemos terminado nuestro viaje de estructuras de datos.

La desventaja más notable es que debe volver a imprimir todo el directorio telefónico si desea insertar un par de nombres adicionales. Los directorios telefónicos se imprimen una vez al año, y en ese momento se crea una nueva versión. Pero, ¿qué pasaría si necesitaras algo que esté siempre actualizado?

Bueno, hay una manera de estructurar los datos de manera que los datos nuevos sean fáciles de insertar rápidamente. Los programadores llaman a esta estructura de datos un “árbol” debido a la apariencia de algunas representaciones abstractas en papel. Hay muchos, muchos tipos diferentes de árboles. Aquí está la idea detrás de un tipo de árbol llamado árbol B +: en lugar de ordenar los datos alfabéticamente, tiene una página de índice que dice algo como:

A – AW (no incluye el límite superior): vaya a la página 45

AW – BG: vaya a la página 123

Cuando llegue a la página especificada, puede haber otra página de índice que subdivida aún más el rango, hasta que llegue a un rango tan pequeño que todos los nombres quepan en una página.

No mantenemos las páginas completamente llenas, de modo que cuando necesitamos escribir un nuevo nombre, simplemente encontramos la página a la que pertenecería y la escribimos allí. Si una página se llena y aún necesitamos agregar un nombre, la dividimos en 2 páginas, cada una ahora a la mitad, y modificamos la página de índice que nos llevó allí para reflejar el cambio. Con el tiempo, las páginas de índice también pueden llenarse, y luego tendremos que dividirlas también y modificar sus páginas de índice de nivel superior, etc.

Los árboles son algunas de las estructuras de datos más fundamentales, pero hay muchas otras.

Los gráficos representan entidades (personas, ciudades) y las relaciones entre ellas (amistades, vuelo de conexión). Hay mucha teoría sobre los gráficos que nos permite resolver problemas interesantes sobre ellos de una manera muy abstracta y general.

Los montones son como árboles de torneos (paréntesis de eliminación), con valores más altos (mejores jugadores) que dominan los valores más bajos (peores jugadores) y aparecen en la parte superior. La principal ventaja de los montones es que la eliminación de estilo de torneo es rápida (la construcción de un montón es rápida) y puedes conocer de manera muy eficiente a los mejores jugadores o a los mejores jugadores de la pareja.

Las tablas hash son estructuras de datos que calculan el espacio correcto para almacenar un objeto únicamente en función de su contenido. Imagínese si un garaje determinara dónde estacionaría su automóvil basándose en un cálculo matemático que involucra su número de placa, de modo que cuando quisiera encontrar su automóvil, repetiría el cálculo y sabría dónde está.

Los árboles de rango pueden buscar eficientemente todos los puntos ubicados dentro de un rectángulo especificado en el plano bidimensional. Piense en buscar restaurantes cercanos en un mapa, dada su ubicación actual.

—-

En cuanto a la relación con los algoritmos, muchos algoritmos necesitan buscar ciertos tipos de datos de manera eficiente. Las estructuras de datos aceleran ese proceso sobre lo que se lograría si los datos se almacenaran sin ningún orden en particular en una matriz.

Gracias por el A2A.

Una estructura de datos es un formato especializado para organizar y almacenar datos . Los tipos de estructura de datos generales incluyen la matriz, el archivo, el registro, la tabla, el árbol, etc. Cualquier estructura de datos está diseñada para organizar datos que se adapten a un propósito específico para que se pueda acceder a ellos y trabajar de manera adecuada.

  • Una matriz es un número de elementos en un orden específico, típicamente todos del mismo tipo. Se accede a los elementos utilizando un índice entero para especificar qué elemento se requiere (dependiendo del idioma, los elementos individuales pueden ser forzados a ser del mismo tipo o pueden ser de casi cualquier tipo). Las implementaciones típicas asignan palabras de memoria contiguas para los elementos de las matrices (pero esto no siempre es una necesidad). Las matrices pueden ser de longitud fija o redimensionables.
  • Una lista vinculada (también llamada lista ) es una colección lineal de elementos de datos de cualquier tipo, llamados nodos, donde cada nodo tiene un valor y apunta al siguiente nodo en la lista vinculada. La principal ventaja de una lista vinculada sobre una matriz es que los valores siempre se pueden insertar y eliminar de manera eficiente sin reubicar el resto de la lista. Sin embargo, algunas otras operaciones, como el acceso aleatorio a un determinado elemento, son más lentas en las listas que en las matrices.
  • Un registro (también llamado tupla o estructura ) es una estructura de datos agregados. Un registro es un valor que contiene otros valores, típicamente en número fijo y secuencia y típicamente indexados por nombres. Los elementos de los registros generalmente se denominan campos o miembros .
  • Una unión es una estructura de datos que especifica cuál de varios tipos primitivos permitidos puede almacenarse en sus instancias, por ejemplo, flotante o entero largo . Contraste con un registro, que podría definirse para contener un flotante y un entero; mientras que en una unión, solo hay un valor a la vez. Se asigna suficiente espacio para contener el tipo de datos de miembro más amplio.
  • Una unión etiquetada (también llamada variante, registro de variante , unión discriminada o unión disjunta ) contiene un campo adicional que indica su tipo actual, para una mayor seguridad del tipo.
  • Una clase es una estructura de datos que contiene campos de datos, como un registro, así como varios métodos que operan sobre el contenido del registro. En el contexto de los OOP, los registros se conocen como estructuras de datos antiguas y simples para distinguirlos de las clases.
  • Para obtener más información, puede visitar mi sitio web.

Las estructuras de datos para la búsqueda en tiempo sub-lineal, descritas por Eugene Yarovi, son una clase importante de estructuras de datos, pero no son las únicas. Aquí hay algunos otros:

  • Las estructuras de datos gráficos, que conceptualmente consisten en ‘nodos’ conectados por ‘bordes’, se usan ampliamente, y no solo para la búsqueda. Por ejemplo, los nodos podrían representar ciudades y los bordes podrían representar carreteras. Además de búsquedas como “cuál es la ruta de carretera más corta desde Boston a Los Ángeles”, podemos usar una estructura de datos gráficos para responder una pregunta como “qué tan robusta es esta estructura, es decir, cuál es el número máximo de carreteras que puede ser destruido sin ninguna posibilidad de que ya no pueda conducir de Boston a Los Ángeles “. Los gráficos también se usan en aplicaciones donde la correspondencia con una estructura mundial física no es tan sencilla. Por ejemplo, los gráficos podrían usarse en la representación de un conjunto de restricciones usadas para resolver un rompecabezas de Sudoku.
  • Se puede usar una estructura de datos octree para representar datos tridimensionales (también llamados “datos de volumen”) de tomografía asistida por computadora (tomografías computarizadas). Un octree es un tipo especial de gráfico en el que cada nodo es una ‘hoja’ (que representa una región uniforme del espacio) o tiene bordes para 8 nodos ‘secundarios’, donde cada nodo secundario representa un subcubo de su ‘principal’ nodo. Los datos de octree podrían usarse, por ejemplo, para visualizar la región escaneada del cuerpo como una serie de cortes.
  • Una estructura de almacenamiento dinámico binario, que es solo una secuencia de elementos dispuestos de acuerdo con la regla de que, con respecto a alguna comparación de orden, el elemento en la posición i siempre es menor que el elemento en la posición 2i y el elemento en la posición 1 + 2i, se puede utilizar para llevar a cabo de manera eficiente tres operaciones: insertar (elemento), encontrar el elemento mínimo, eliminar el elemento mínimo. Esto lo hace útil como una ‘cola prioritaria’, lo cual es especialmente importante en la simulación de eventos discretos en la que los elementos son eventos programados para suceder en algún momento simulado futuro, y la relación de pedido es “sucederá antes”. Podríamos usar tal simulación, por ejemplo, para determinar el momento óptimo de los semáforos en una cuadrícula de calles de la ciudad.
  • La estructura de árbol especial utilizada para el algoritmo de búsqueda de unión nos ayuda a agrupar muy rápidamente un conjunto de elementos que obedecen a una ley transitiva, que dice que si A se agrupa con B y B se agrupa con C, entonces A, B y C todos Pertenecer al mismo grupo. Esto se desarrolló originalmente para resolver un problema particular en la traducción del lenguaje de programación FORTRAN, pero desde entonces se ha utilizado para una gran variedad de problemas.

Podría continuar … básicamente, siempre que encuentre un problema que requiera una solución algorítmica no trivial, el algoritmo y las estructuras de datos utilizadas por ese algoritmo estarán estrechamente vinculadas. Elija casi cualquier problema para el que necesitemos una solución eficiente, y para el cual la solución más obvia no sea suficiente, y encontrar una mejor solución comenzará con el diseño de la estructura de datos.

Las estructuras de datos son un andamiaje de software que se utiliza alrededor de los datos para que sea más fácil de manejar que los datos sin procesar en sí.
El papel moneda y las monedas, las tarjetas de crédito, etc., son estructuras de datos para tratar con datos financieros a nivel personal: un dólar es solo un concepto de datos, pero hacer que se puedan intercambiar ayuda a la transferencia y portabilidad de la riqueza.
Para cantidades mucho mayores o menores, utilizamos software. No es la factura, es el número de serie en la factura. sin eso es solo un pedazo de papel.

Las estructuras de datos solían estar en papel antes que las computadoras, eran libros de contabilidad con columnas y cuadros rojos y verdes, manchas de colores en una mesa de juego, carriles en una pista de carreras, diccionarios alfabéticos, tablas de mareas. Un montón de tablas para el montaje y la coordinación de la información, incluso gráficos para hacer la guerra por números. Todo organizado minuciosamente por ingenieros para que trabajar con datos sin procesar fuera sensato y produjera resultados correctos y consistentes.

Los datos vienen en diferentes tipos de formas, números, letras, audio, video, imágenes, texto, incluso binarios en bruto. El mundo del software se ha asentado en bytes binarios como el bloque de construcción de datos básico, por lo que las estructuras de datos en el software lo usan. Gran parte del tema de la ciencia de la información y la informática en particular se consume con la eficiencia y la eficacia de las estructuras de datos, y las millones de formas de usarlas (algoritmos) para lograr el mejor efecto para los diversos objetivos que las personas usan para generar y consumir datos.
Al igual que un pescador usa diferentes señuelos y diferentes nudos y diferentes cebos y líneas para hacer el mejor trabajo de pesca, un codificador elabora las estructuras de datos y algoritmos para hacer un trabajo de datos.

A medida que el tamaño de los datos y los trabajos se expanden a tasas exponenciales cada vez mayores, necesitamos crear estructuras de datos y algoritmos que puedan manejar esas vastas cantidades de bytes en tiempos razonables para que los datos sean valiosos y útiles. Entonces hay un aspecto evolutivo. Hasta que se produzca un salto cuántico gigante en el hardware informático, si es que se produce, los saltos tendrán que ser intelectuales y centrarse en estructuras de datos y algoritmos para tratar los datos, no solo máquina por máquina, sino como una red a gran escala de millones de máquinas trabajando simultáneamente. Eso está empezando a suceder y el futuro de los datos, estructuras de datos y algoritmos masivamente paralelos acaba de comenzar. Además, cuando las computadoras cuánticas o las computadoras telepáticas, o las computadoras cultivadas en cerebros o lo que sea real, vamos a necesitar estructuras de datos y algoritmos para alimentarlos también.

Se requieren estructuras de datos para almacenar datos de manera eficiente. Ciertas operaciones de procesamiento de datos son más baratas en términos de tiempo y espacio de cálculo si los datos se almacenan de una manera particular.

Piensa en un directorio telefónico. Imagínese si todos los números de teléfono estuvieran desorganizados. Sería extremadamente difícil buscar el número de alguien. El directorio almacena los datos de una manera particular (ordenados lexicográficamente) de modo que el costo (tiempo) de buscar el número de alguien sea muy bajo.

Ahora, cada vez que se reduce el costo de una operación, aumenta el costo de otra operación. Imagine agregar un nuevo número a la guía telefónica. En un directorio no organizado, simplemente puede agregar una nueva página con todos los números nuevos. Pero en el directorio organizado, deberá buscar la página correcta para cada nuevo número que se insertará y luego cambiar todo el número para crear espacio. Esto puede cambiar la mayoría de las páginas en el directorio. Por lo tanto, tendrá que volver a imprimir.

Pero casi nunca agregamos ningún número nuevo a una guía telefónica. Todos los números nuevos se agregan una vez al año y se implementa una nueva versión. Por lo tanto, se utiliza una estructura de datos para explotar las limitaciones de la vida real con el fin de optimizar ciertas operaciones de uso frecuente.

El concepto de estructura de datos es exactamente como su nombre lo indica. Datos estructurados.

Considere cualquier objeto del día a día que conozca y redacte una lista de sus atributos. Estos atributos dispares son parte del elemento en cuestión, por lo que los agrupamos en una construcción que nos permite abstraer esta colección, para que podamos referirnos a esta colección como un elemento singular, con muchos atributos.

Los datos estructurados son esenciales para el almacenamiento, la recuperación y el uso eficientes de datos complejos. Puede ser llamado por otros nombres, como “formato de registro”, pero la idea es que esta recopilación de datos representa algo específico: cliente, producto, factura.

Ahora, la cuestión del uso de datos estructurados en un algoritmo … para mí se reduce a la eficiencia y la claridad, en oposición a un requisito innato. Puede efectuar su algoritmo sobre cualquier recopilación de datos, independientemente de la “estructura”, pero el resultado puede ser innecesariamente complicado. Al aplicar alguna organización a sus datos, puede implementar su algoritmo de manera más limpia y clara, ya que sus contextos entre datos y procesos pueden expresarse en forma resumida .

Los algoritmos, cuando se expresan con la organización adecuada de datos y metodología, son mucho más fáciles de mantener que sus contrapuntos no estructurados. El próximo programador que trabaje con su código lo apreciará.

Escenario 1: Supongamos que hay una ciudad, por ejemplo, X. Tiene carreteras en mal estado, mal sistema de drenaje, falta de electricidad, apartamentos residenciales mal administrados. Muchas personas simplemente no tienen una dirección. Básicamente, todo está en mal estado.

Ahora, cuando vemos a las personas como datos, eso es un ejemplo de estructura de datos errónea.

Escenario 2: Ciudad Y es el sueño de todos. Todo se gestiona perfectamente. Cada uno que vive en la ciudad tiene una dirección adecuada.

Ese es un ejemplo de buena estructura de datos.

Ahora pasemos a los algoritmos.

Suponga que desea buscar a la persona P en la ciudad X. Le resultará muy difícil buscarla. Desde entonces, puede estar sin hogar y se puede encontrar en cualquier lugar.

Pero lo mismo no es cierto para la ciudad Y. Todas las personas en la ciudad Y tienen una dirección y caminos pavimentados que conducen a esa dirección. Además, las calles se nombran y se mantienen adecuadamente.

Creo que tienes la intuición.

Los algoritmos es algo que aplicamos en los datos para hacer algo significativo. Como, por ejemplo, encontrar el camino más corto en la red de carreteras.

Y las estructuras de datos son algo que facilita la tarea. (Si usas el bueno).

La idea de las estructuras de datos y por qué las usamos no es muy difícil de entender. Usamos la misma idea en todas partes, está a nuestro alrededor. Por ejemplo –
Un diccionario: ¿Por qué las palabras están ordenadas / ordenadas alfabéticamente?
Supermercado: ¿Por qué las cosas se arreglan de una manera particular?
Un viaje: ¿Por qué planificas tus viajes? ¿Por qué no simplemente irse?
Colas: ¿Por qué forma colas?

Todos los ejemplos anteriores indican cómo hemos desarrollado hábitos para simplificar u optimizar nuestras actividades cotidianas.
Es lo mismo con las estructuras de datos. Almacenan datos. Generalmente necesitamos realizar 3 operaciones básicas en datos a saber. buscar , agregar , eliminar . Se requieren diferentes estructuras de datos (disposición de los datos) para diferentes requisitos (el diccionario es datos ordenados alfabéticamente mientras que un libro no lo es. Un libro usa índice y tabla de contenido para una búsqueda fácil).
Los algoritmos son la forma en que formamos, usamos o mantenemos estas estructuras de datos de manera eficiente . Son un conjunto de instrucciones paso a paso. Un ejemplo simple es cuando busca una palabra en el diccionario, ¿comienza desde la primera página y continúa secuencialmente o abre una página aleatoria y pasa a la parte anterior o siguiente según la página que ha abierto? ¿Cuál crees que sería más rápido? Un “algoritmo” que puede usar es
1: Abra el diccionario en la primera página.
2: Mientras quedan páginas o no se encuentra la palabra
2.1 búsqueda de la palabra.
2.2 página siguiente.
3. detente.
El otro es
1: Abra el diccionario en una página aleatoria.
2: mientras la palabra no se encuentra y la página es nueva
2.1 si la letra de la página es menor (alfabéticamente) que la palabra deseada
2.1.1 buscar la palabra en la siguiente parte.
2.2 más si la letra de la página es mayor (alfabéticamente) que la palabra deseada.
2.1.2 buscar la palabra en la parte anterior.
2.3 si la palabra se encuentra en la página.
detener.
3: detente.

La “aplicación” general (como en el escenario de uso) son las diferentes formas de organizar los datos que utiliza su programa para completar sus tareas. Obtiene dos tipos de estructura de datos base: un bloque contiguo de bits (es decir, una matriz) y una construcción de nodo vinculado (como una lista vinculada, árbol, red, etc.). Esos dos métodos (generalmente uno de ellos, aunque también hay formas de combinarlos) se usan con una funcionalidad más detallada para establecer ciertas restricciones y características sobre cómo se almacenan los datos (en RAM, así como en almacenamiento no volátil como en archivos en desct).

Algunas estructuras de datos ordenarían todos los contenidos por usted, otras proporcionan formas de acceder / agregar / eliminar datos más rápidamente que tener que buscar en todos los contenidos antes de encontrar el elemento / posición de datos relevante.

Más específicamente, eliges cuál usarás caso por caso. Esto es similar a lo que haría con una recopilación de cualquier tipo de información / datos, no solo cosas electrónicas en su programa. Por ejemplo, si piensa en sus recibos a efectos fiscales, ¿simplemente los arroja a todos en un cajón y luego los revisa para hacer sus impuestos? ¿O los agrupas por año? ¿O incluso ordenarlos por fecha / propósito? ¿O hace un seguimiento de ellos en alguna forma de registro / índice? Bueno, haga lo que haga para organizarlos, esa es la estructura de datos que está utilizando.

El acto de decidir cuál usar le proporcionará la aplicación específica. Es un ejercicio inútil probar una lista de todos y cada uno de los casos de uso para cada método de organización de datos. Más bien, trate de pensar en lo que permite un DS específico, qué implica agregarlo, eliminarlo y encontrar cualquier elemento específico en él. Luego, dependiendo de su escenario de uso, elija el que tome el menor número de pasos para realizar las tareas más comunes, o al menos uno que tome un promedio aceptable en todas las tareas que se le aplicarán.

Por ejemplo, ¿realiza un seguimiento de los pedidos realizados? ¿Necesita ordenarlos por fecha de entrega solicitada, o es aceptable simplemente ir con un sistema FIFO (es decir, el pedido más antiguo se entrega primero)? ¿Existe una cantidad máxima de pedidos preestablecida, o puede fluctuar mucho? ¿Necesita encontrar un pedido específico por algún valor clave (por ejemplo, el cliente solicita que se complete el pedido proporcionando un número de pedido)? ¿Cuántas órdenes en ejecución piensas que son actuales? ¿Cuánto tiempo necesita para realizar un seguimiento de los pedidos entregados? Etc., etc., etc. Todas estas preguntas influyen en el DS que elija para los datos en RAM, así como los datos que almacena en el disco, porque cada DS tiene una respuesta diferente para cada una de esas preguntas; algunas son más eficientes en una de esas Si bien lo es menos para los demás, otros son malos para todos, otros son buenos para la mayoría de ellos. El truco es descubrir por qué un DS en particular es bueno para uno, pero no para el otro, y luego comparar diferentes DS para encontrar el “correcto” para usar. Después de haber hecho esto suficientes veces, dicha comparación se convierte en una segunda naturaleza (no toma más de unos segundos de pensamiento elegir entre algo como una matriz desordenada, una lista vinculada, un árbol de búsqueda binario, una tabla hash, etc.).

• Las estructuras de datos organizan los datos.

–Esto da programas más eficientes.

• Las computadoras más potentes fomentan aplicaciones más complejas.

• Las aplicaciones más complejas exigen más cálculos.

Las tareas informáticas complejas son diferentes a nuestra experiencia cotidiana

Las estructuras de datos se utilizan en casi todos los programas o sistemas de software.

. Las estructuras de datos específicas son ingredientes esenciales de muchos algoritmos eficientes y hacen posible la gestión de grandes cantidades de datos, como una gran colección integrada de bases de datos.

. Algunos lenguajes de programación enfatizan las estructuras de datos, en lugar de los algoritmos, como el factor organizador clave en el diseño de software.

¿Conoces la historia de la cigüeña y el zorro? Imagine que los dos son algoritmos diferentes que intentan trabajar en la misma estructura de datos.

Las estructuras de datos son contenedores en los que almacenamos información. Los contenedores se eligen de acuerdo con nuestros requisitos. A veces, necesitamos manipular esta información, mientras que el resto de las veces solo necesitamos consultarla. Dependiendo del contenedor, podemos cambiar o recuperar información de manera eficiente.

Usar una estructura de datos incorrecta sería equivalente a usar un bate de béisbol en el cricket. La operación de defensa no existe. Del mismo modo, algunos contenedores deben clasificarse. Otros solo necesitan cambiar el valor de elementos dados, sin preocuparse por ordenar.

Debe leer detenidamente qué estructuras de datos se sugieren para un algoritmo dado. En algunos casos, la eficiencia del algoritmo explota al elegir el contenedor correcto. Mi favorito es Dancing Links.

Las estructuras de datos, en los términos más simples, son una forma de almacenar tipos de datos de forma estructurada.

Ejemplos:

Una matriz es una estructura de datos
Una tupla es una estructura de datos.
Una lista es una estructura de datos
Una clase es una estructura de datos

Entonces, ¿por qué los usamos? Si ha estado programando incluso durante una semana, habría utilizado una matriz. Básicamente simplifica las variables de agrupación e indexación. Si ha estado codificando en Python, básicamente está usando una Clase desde el minuto 1.

En pocas palabras, disminuye drásticamente la complejidad de la programación. Antes, especialmente en los primeros ensamblajes, debe crear estas estructuras manualmente. Agrega mucha sobrecarga en la velocidad de desarrollo. En C, donde no hay clases inherentes, los programadores estaban haciendo desarrollo orientado a objetos mediante el uso de punteros y grupos de punteros.

Ahora que estas estructuras están integradas con lenguajes modernos y pueden utilizarse fácilmente, acelera el tiempo de desarrollo y disminuye drásticamente la complejidad.

Ahora, ¿cómo se relacionan las estructuras con los algoritmos? Mire los algoritmos de clasificación, es mucho más fácil usar ese algoritmo en los arreglos que los punteros. ¿Qué hay de algoritmos orientados a objetos? Básicamente requerirá clases.

Además, un algoritmo que realice probablemente utilizará estructuras de datos.

Entonces, si resumiera todo esto.

  • Las estructuras de datos son una forma de almacenar o acceder a datos dentro de una estructura compuesta de otros datos.
  • Los usamos para simplificar la agrupación manual de datos de manera estructurada
  • Simplifica la complejidad de aplicar y crear algoritmos que funcionan en grupos de datos.

Las PC pueden almacenar y procesar medidas de información insondables. Las estructuras formales de información facultan a un ingeniero de software para estructurar racionalmente una gran cantidad de información en conexiones razonablemente razonables. De vez en cuando utilizamos estructuras de información para permitirnos lograr más: por ejemplo, para lograr una búsqueda o clasificación rápida de la información. En diferentes momentos, utilizamos estructuras de información con el objetivo de que podamos hacer menos: por ejemplo, la idea de la pila es un tipo restringido de una estructura de información más amplia. Estos confinamientos nos dan promesas que nos permiten razonar sobre nuestros proyectos sin esfuerzo. Las estructuras de información adicionalmente aseguran la calidad algorítmica multifacética: elegir una estructura de información adecuada para una ocupación es esencial para componer una gran programación. Dado que las estructuras de información son reflexiones de cantidades más elevadas, nos presentan operaciones sobre reuniones de información, por ejemplo, agregando algo a un resumen, o volteando hacia arriba lo más asombroso que se necesita en una línea. En el momento en que una estructura de información proporciona operaciones, podemos llamar a la estructura de información un tipo de información dinámica (a veces abreviado como ADT). Los tipos de información únicos pueden minimizar las condiciones en su código, lo cual es esencial cuando se debe cambiar su código. Dado que está preocupado lejos de los elementos sutiles de nivel inferior, un porcentaje de la cantidad más elevada de características compartidas que ofrece una estructura de información con una estructura de información alternativa se puede utilizar para suplantar una con la otra.

Dado que todo el software no trivial requiere estructuras de datos para organizar sus datos, la respuesta es “prácticamente todo lo que puede hacer en una computadora es una aplicación de estructuras de datos”. Las estructuras de datos no son un tema secundario esotérico, son fundamentales para escribir software.

  • Videojuegos: los niveles, los gráficos, la música, el texto, los modelos 3D y el motor gráfico utilizan estructuras de datos complicadas para representarlos.
  • Bases de datos: muchas estructuras de datos clásicas para almacenar los datos; árboles, hashes, listas, etc. Esto es lo que muchos piensan cuando se habla de estructuras de datos.
  • Sistemas operativos: almacenamiento en disco, elementos GUI y gestión de controladores son algunos ejemplos de datos necesarios gestionados por el sistema operativo.
  • Software de Office: el procesamiento de textos, las hojas de cálculo y las presentaciones se crean a partir de estructuras de datos para representar los documentos.
  • Navegación web: el DOM utilizado para representar páginas web es una estructura notoriamente compleja. También es la tecnología fundamental detrás de la forma en que funcionan los navegadores.
  • Redes: los paquetes que se envían a través de Internet tienen una estructura particular. Las tablas de enrutamiento, que indican a los paquetes a dónde ir, también son una estructura de datos.
  • Búsqueda / indexación: desde Google hasta la barra de búsqueda de su computadora, se trata de organizar la información de su computadora de manera estructurada para que pueda recorrerla rápidamente.
  • Mapeo: la magia fundamental detrás del software de mapeo es una base de datos gigantesca de información geográfica, conectada entre sí de una manera que permita el enrutamiento.
  • Ciencia: ejecutan muchas simulaciones para cosas como fluidos, plegamiento de proteínas, patrones climáticos, comportamientos estructurales, etc. Todas las simulaciones son esencialmente un algoritmo aplicado a una estructura de datos complicada.

No he entrado en detalles sobre los tipos de estructuras de datos; Hay miles de posibilidades, y esta pregunta es demasiado amplia para eso. Esperemos que al menos esto te dé una idea de lo importantes que son para la programación.

¿Qué es la estructura de datos? ¿Por qué debería aprender Estructura de datos?

En las últimas décadas, la velocidad de las computadoras ha aumentado enormemente. Las computadoras hoy en día pueden realizar millones de instrucciones en cuestión de segundos. Pero cuando la complejidad de un problema aumenta, ya no estaremos en condiciones de ignorar el rendimiento de la computadora y, cómo la información almacenada en la computadora afecta directamente su rendimiento. Por lo tanto, para un mejor rendimiento, necesitamos un método para estructurar y organizar los datos de manera eficiente en un almacenamiento. Aquí es donde las estructuras de datos fueron útiles.

¿Qué es la estructura de datos?

Una Estructura de datos, como su nombre lo indica, es un método para almacenar datos de forma estructurada para que puedan crearse, verse y administrarse fácilmente d.

[1]

Notas al pie

[1] ¿Qué es la estructura de datos? ¿Por qué debería aprender Estructura de datos?

¡Para almacenar datos de manera estructurada y eficiente!

Por ejemplo:

Si ha diseñado una aplicación para el registro de dicha competencia, entonces no sabrá cuántos estudiantes se registrarán. Por lo tanto, no puede utilizar variables predefinidas, lo que restringe el registro para pocos estudiantes.

Por lo tanto, necesita alguna estructura dinámica que también sea una variable, pero su variable (es decir, definirá esa estructura), como por ejemplo, para la estructura de ejemplo anterior, debe tener

Estructura estudiante

{

nombre del personaje[],

int phone [],

char DOB [],

};

Etc ..

Entonces, si declaras estudiante s1, entonces es tu propia variable (definida).

I este tipo de aplicaciones necesitará estructura supongo

😛

Aquí viene una metáfora, adecuada para una mentalidad anterior a 1970 (es decir, es una tontería tomar esto demasiado literalmente).

Una estructura de datos es como un formulario en papel. Está estructurado (es decir, tiene varios cuadros para completar) con información (datos). A diferencia de un formulario, la mayoría de las estructuras de datos no intentan autodocumentarse. (Es decir: no hay sugerencias útiles sobre qué poner en el “Cuadro 1”.) Dependiendo de las capacidades del entorno de programación, los tipos de datos que se pueden poner en los cuadros pueden ser muy simples (bytes) o elaborados (hora y fecha , nombres, referencias de propiedades, etc.)

Las estructuras de datos son tan importantes para la programación como lo son los algoritmos. En cierto sentido, los algoritmos son las reglas para enviar y tratar formularios.

Un aspecto “emergente” importante son las estructuras de datos que se utilizan para administrar otras estructuras de datos, en resumen, formularios (y reglas) para tratar con otros formularios (más básicos). Esto a menudo se llama “metadatos”. Cuando las personas mencionan listas vinculadas, binarios (u otros árboles), matrices, hashes, objetos, clases, contenedores, etc., están hablando de estos metadatos.

A veces, una implementación combinará los metadatos con los otros datos, es decir: una estructura de datos que proporciona información postal sobre una persona también contendría punteros (o referencias) para implementar una lista vinculada o un árbol binario.

¿Alguna vez tu madre te ha regañado cuando no has tenido éxito mientras buscabas un libro en particular en algún lugar de tu habitación desordenada?

¿sí?

así que su madre siempre tiene razón cuando dice que mantenga sus cosas en el lugar correcto después del uso, de modo que siempre que lo necesite la próxima vez pueda obtenerlo fácilmente. Mantenga todos sus libros en un lugar, las llaves en un lugar en lugar de tirar en cualquier lugar. esto es lo que es la estructura de datos, manteniéndote las cosas (datos) en una estructura tal que siempre que necesites buscarla la obtengas lo antes posible.

Ahora el algoritmo es una forma de procesar esta disposición de datos de manera que obtenga los datos deseados de manera eficiente (probablemente rápido)

tomemos un ejemplo de algoritmos, si estudias en 5 semestres de tu universidad y tienes libros de todo el semestre por adelantado (es decir, desde el primer semestre hasta los 8 segundos)

ahora lo apilas como si la primera sem fuera de la parte inferior y luego 2 segundos arriba como una pila.

ahora desea obtener los libros por 5 segundos, si lo busca desde arriba, solo le tomará 3 semestres alcanzar su libro de semestre actual (es decir, 5 sem), pero si lo hace desde abajo, tardará 5 sem para llegar allí, así que la forma en que atraviesas la pila de libros es un algoritmo y cómo los organizas es la estructura de datos.

pero estoy seguro, incluso después de leer esto, vas a tirar tus cosas aquí y allá en la habitación porque todavía lo hago 😛 es divertido

Espero que ayude

felicitaciones 🙂

Las estructuras de datos definen la disposición / organización esquemática de los datos.
If define cómo se van a almacenar y utilizar los datos en una aplicación.

Muchas veces, el rendimiento de un algoritmo depende en gran medida del tipo de estructura de datos utilizada para resolver el problema en cuestión.

Las estructuras de datos son los componentes básicos de un buen diseño de aplicación. Es mucho decir sobre las estructuras de datos. Por lo tanto, le sugiero que consulte mi entrada de blog Estructuras de datos – Techie Me

A medida que la ingeniería de software y la informática se desarrollaron en los años 60 y 70, ciertos tipos de datos parecían seguir los mismos patrones básicos en la forma en que estaban relacionados entre sí. Por ejemplo, todas las respuestas a esta pregunta son una “lista”. Las estructuras de datos son la abstracción de cuestiones prácticas para observar las relaciones subyacentes y luego cómo codificarlas. Las principales clases de estructuras de datos son:

1. Listas (a veces conocidas como matrices)
2. árboles
3. Gráficos