Introducción a las estructuras de datos
Todo lo que aprenderás sobre estructuras de datos con JavaScript
¿Qué son las estructuras de datos?
Memoria y cómo se guardan los datos
Arrays y strings
Arrays
Construyendo nuestro Array
Eliminando elementos del Array
Playground: crea tu propia implementación de unshift
Playground: crea tu propia implementación de shift
Strings
Hash Table
Hash Tables
Construyendo una Hash Table
Implementando el método Get
Playground: implementa el metodo Delete
Playground: implementa el método getAllKeys
Linked List
Linked List
Construyendo una Singly Linked List
Agregar nodos a la lista
Agregar nodos intermedios
Doubly Linked List
Stacks
Stacks
Construyendo un Stack
Queues
Queues
Construyendo un Queue
Trees
Trees
Construyendo un Binary Search Tree
Graphs
Graphs
Representando grafos en código
Construyendo un grafo
Cierre
Conclusiones
Crea una cuenta o inicia sesión
¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera
Diego De Granda
Aportes 45
Preguntas 10
Un array SIEMPRE va a iniciar en la posición 0.
.
En lenguajes como C tú tienes que definir la cantidad de memoria que quieres reservar para ese array. Esto hace que su uso sea eficiente, pues la computadora no tiene que estar reservando más espacios “por si a caso”.
.
Un array dinámico reservará un poco más de espacio del que necesita, y cuando este espacio se acabe reservará aún más espacio. Recuerda que la computadora tiene que buscar slots consecutivos disponibles para asignar ese espacio y mientras más información haya guardada más difícil será encontrar este espacio.
La búsqueda binaria es ventajosa sobre una búsqueda lineal estándar porque busca más rápido y más eficientemente es lo que llamamos “divide y vencerás”.
Array es una colección de información
Arrays estáticos son aquellos que se quedaran fijos debido a que definimos cuantos espacios tendremos, es decir que le diremos a la maquina cuantos slots deberá usar
Arrays dinámicos son aquellos que podemos mutar
<h4>Apuntes</h4>Los arrays son como una lista con indices numerales consecutivas
Tambien son conocidas como listas
Tenemos diferentes métodos construidos por el lenguaje
Si nosotros agregamos un elemento al inicio debe haber ciertas operaciones que deben suceder
Existen dos formas de arrays
RESUMEN: Existen dos tipos de listas, los estáticos que estas cuentan con slots de memoria definidos por nosotros y los dinámicos, estos se usan por defecto JavaScript, requieren una considerable cantidad de memoria la cual puede crecer a medida que lo necesitemos
Es una de las estructuras de datos mas básica y que probablemente ya hayas utilizado, es muy común que cuando no sepamos sobre este tema de Data Strucutures todo absolumente todo lo metamos en un array y ya esta. Esto no suele ser buena practica ya que los arrays no son la mejor de las soluciones en muchos casos
Son una collection de information, donde cada elemento (los valores que guardemos separados por coma) dentro del array tiene una posición, (Siempre iniciamos a contar en la posición 0).
.
Es una collección de información
const arr = [1, 2, 3]
JS por defecto va a crear un array con 6 espacios o posiciones.
Los arrays son una coleccion de informacion almacenada en la memoria, donde su tamaño depende de si el array es estatico o dinamico.
Un array estático es aquel que le avisa a la memoria cuantos slots utliza, como en C++. Si se requiere que este tamaño aumente lo que hace la memoria es copiar los datos obtenidos y añadirle el nuevo dato en un nuevo espacio de memoria para posteriormente eliminar el antiguo.
//Código en C
int arre[5] = {1, 2, 3, 4, 5};
Un array dinámico No avisa a la memoria cuanto espacio va a ocupar, por lo tanto la memoria le va a asignar el doble de slots de su memoria inicial en caso de que se llegue a necesitar más espacio. Si se ocupa mas de lo solicitado de memoria ocurre algo similar que con los estáticos, Se copia el nuevo valor de los slots a un espacio disponible el cual sera del máximo anterior multiplicado por 2.
//Código en JS
let arre = ["Diego", "Karen", "Michi"];
Si a alguien le sirve les comparto mis apuntes que hice en un HTML 😄
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Arrays</title>
</head>
<body>
<h1>Métodos</h1>
<ul>
<li><b>push: </b> agrega un elemento al final del array</li>
<li><b>pop: </b> borra el último elemento</li>
<li><b>unshift: </b> agrega un elemento al inicio del array</li>
<li><b>shift: </b> borra el primer elemento del array</li>
<li><b>splice: </b> agrega un elemento en una parte del array</li>
</ul>
</body>
</html>
😃 Todo lo que menciona, puede ser aplicado a otro lenguaje de programación. Este es un conocimiento reutilizable.
Genial la clase, me gusta como explica De Granda, sabe traer a ejemplos cotidianos todos estos conceptos tecnicos con palabras sencillas y familiares
Para los arrays :la búsqueda, inserción y borrado son BIg O(n) en complejidad de tiempo.
Array estatico
array nums = [4, 8, 5]
la PC sabe en que slot comienza cada dato del array
2 al 9 = numero 4 = 1 byte
10 al 17 = numero 8
18 al 25 = numero 5
cada numero ocupa 1byte , osea 8 bits
Array dinamico
array nums = [4, 8, 5] == [4, 8, 5, X, X, X,]
en un array dinamico, el array se crea con 3 elementos ya definidos, pero el array en total reserva el doble de elementos
si creamos un array de 3, crea uno con 6 espacios disponibles en memoria... pero si le agregamos elementos hasta llegar a 7, js lo que va a hacer es crear un nuevo array con 12 slots, y va a copiar los elementos que tenia el array inicial en este nuevo array, va a agregar el 7mo elemento en el nuevo array y luego va a borrar al array original para optimizar el espacio de memoria
Para las personas que no venimos de lenguajes de tan bajo nivel , es fabulosa esta explicación.
ME MATO EL L CHIQUITO QUE OBSERVA LA CLASE muy buena clase por cierto!!!
Arrays
Son coleciones de informacion, pueden ser representados asi:
0 - Diego
1 - Karen
2 - Oscar
3 - Paulina
4 - Ulises
5 - Ana
Metodos
Tipos de arrays
estáticos y dinámicos
Arrays estáticos
Al ser creados se declara su dimensión o tamaño, cantidad de slots que asignamos en memoria, y no puede ser redimensionado nuevamente
Array dinámicos
Al ser creados no debemos declarar su dimensión o tamaño, cantidad de slots que asignamos en memoria, y puede ser redimensionado o modificado cuantas veces se desee
Me hizo Limpiar la Panatlla
¡Hola! xD
Para quien le pueda servir les comparto este artículo que escribí respecto a los arrays. Hope you like it!!!
https://deleonnet.com/blog/javascript/arrays/
Los arrays son una colección de información, y tienen métodos para manejar esta información.
Existen dos tipos de arrays
Tuve que ver casi unas 4 veces para poder entender estas 4 clases jaja nose si es un tema muy sencillo o yo estoy muy menso pero lo bueno es que asta ahorita ya le entendí perfectamente bien jaja
que hermoso curso! siempre quise saber como funcionan los datos por dentro y como se hacian, al fin ♥ grande platzi!!
Arrays o listas : son una colección de información.
al generar nuestra colección de información iniciamos de 0 hasta x cantidad de información que tengamos guardada y como valor tenemos la información que queramos estar guardando.
En esta lista de datos nosotros generamos un indice para cada una de la información que guardamos y estos son de forma consecutiva.
Hay metodos que nos ayudan poder manipularlos:
push = Agregar un elemento al final del array
pop = Borra el último elemento
unshift = Agrega un elemento al inicio del array
shift = Borra el primer elemento
splice = Agrega un elemento en una parte del array
ARRAYS ESTÁTICOS Y DINÁMICOS
¿Como manejo los arrays dinamicos y estaticos?
Javascript manejo siempre los arrays dinámicos, se pueden cambiar los arrays, pueo agregar, quitar o cambiar elementos, se puede cambiar elementos deacuerdo a lo que se necesitando.
Cuando marcamos cual es la dimención de este array o lista se guardaria en memoria asi como lo muestra la imagen.
Si queremos mutarlo en memoria seria esto:
Aqui vemos los slots que están usando directamente está lista, eso es porque ya se le dijo a la computadora que necesitamos tres slots para poder guardar estos tres datos.
la computadora sabe que del
2 al 9 nos referimos en todo lo binario que tenga que ver con el numero 4,
10 al 17 con todo lo que tenga que ver con el 8
18 al 25 con todo lo que tenga que ver con el 5
Si queremos crecer la información tenemos que borrar toda la información, clonarla en otro espacio y agreagarle los slots extras, ¡pero! esto seria un problema.
Los dinamicos que es como funciona Javascript.
Cuando creamos una lista con 3 arrays o elementos javascript le va a decir a la computadora y a la memoria, que tiene 3 elementos que agregar pero necesita 6 slots disponibles (duplica la cantidad de elemento que va a necesitar ) porque puede ser que este crezca. Si tenemos un septimo elemento la computadora copia estos 6 slots, busca los 6 slots disponibles, pero como ahora se necesitamos 7 tiene que buscar 12 slots, cuando ya encuentre los 12 slots en una memoria aleatoria, los va a marcar y copiar la información que ya tiene con o otros 6 espacios disponibles para que pueda seguir creciendo ese array y los 6 espacios que teniamos antes los libera y los deja como memoria libre.
Excelente clase
Un array o lista, es una coleccion de informacion, pueden ser estaticos o dinamicos, javascript en particular maneja por default los arrays dinamicos y C maneja las listas de forma estatica.
Estaticos: La computadora sabe de dónde a donde esta cada información en memoria o en este caso el numero exactamente.
const num = [2,5,6,0];
const num = [2, 5, 6, 0 , , , ];
Hice una pausa al minuto 5:38 solo para decir que este curso es maravilloso, La manera en que lo explica el profe Diego De Granda es increíble.
Son una colección de información. Empezamos desde la ubicación 0.
Generamos un índice para cada dato que guardamos. También se les conoce como listas.
Tienen muchos metodos para poder manipularlos. Por defecto los Arrays en JS son dinámicos.
✨ Dinámico ⇒ Es un Array que se puede mutar.
✨ Estático ⇒ Es un Array que no puede ser Mutado.
A un Array dinámico se le dan slots de más por si acaso muta. A los estáticos se le dan los justos.
Si un Array necesita ser mutado de más, pues se borran los datos y se vuelven a guardar en un nuevo espacio.
Un array, es un tipo de dato estructurado que permite almacenar un conjunto de datos homogeneo, es decir, todos ellos del mismo tipo y relacionados.
Un array es una manera de poder guardar datos del mismo tipo o clase (Enteros, carácteres, booleanos, etc.).
La numeración de estos elementos dentro del array comienza en 0 (primer elemento del array) y finaliza en n-1 (último elemento del array) donde n es el tamaño completo de dicho array.
Resumen:
Son una colección de información también conocidas como listas
En los arreglos o listas los datos son guardados en secuencia y se genera un índice para cada dato guardado.
Los arreglos poseen métodos para operar con ellos:
Arreglos estáticos vs dinámicos
.
ya me emocione de construir un arreglo de esta forma!!!, nos vemos a la sig clase
ARRAYS
Es una colección de información. Que se representa de 0 a n cantidad de información y el valors es la información que queremos guardar, generando un índice consecutivo. Se les llama Listas en Python. Tienen métodos para poder manipularlos: agregar, buscar o eliminar elementos. Entendiendo cómo se guarda la información entenderemos podemos ver que esto se puede convertir en un problema, pues depende de cómo se agregue, se va a usar ciertas operaciones.
·
Existen dos formas de Arrays. JavaScript utiliza los dinámicos por default. Porque nosotros no definimos el largo de la lista. Pues si se llega generar un Array estático, no podrá mutar en el tiempo, no podrá cambiar. Por el contrario, un Array dinámico va a designar dinamicamente en lo que vaya necesitando.
·
Los arrays son una colección de información, en otros lenguajes de programación se los llama listas
Existen métodos nativos para modificar estos arrays:
Hay 2 tipos de arrays: Estáticos y Dinámicos.
Un arreglo es una estructura de datos lineal, que consiste en una colección de elementos con tipos de datos similares, cada uno identificado con un índice o clave. El tamaño de un arreglo (en el caso de los arreglos estáticos) debe de ser especificado en el momento de su inicialización. Los elementos son organizados de manera secuencial, uno después del otro dentro de un solo bloque de memoria.
Características:
-Acceso: Soporta un acceso aleatorio eficiente, lo que significa que sus elementos pueden ser accesados directamente a traves de su indice.
-Insercion: Si la insercion esta localizada al principio o en medio del arreglo, todos los elementos posicionados a la derecha se mueven un indice hacia adelante.
-Eliminacion: Si el elemento eliminado esta localizado al principio del arreglo o en medio, todos los elementos posicionados posteriormente se moveran un indice hacia la izquierda para evitar dejar espacios en blanco en la memoria.
-Busquedas: Los arreglos deben de ser revisados de manera secuencial, hasta que un match sea encontrado.
Los Arrays
los arrays son estructuras en los cuales se guardan objetos junto a un índice, tambipen pueden ser llamados listas.
los arrays como toda clase tambien tienen métodos que pueden ejecutarse de la forma Array.metodo(), estos son:
El profesor dijo que se parece a las listas en otros lenguajes como python, pero según tengo entendido las listas funcionan con un enlace, así puede apuntar a cualquier espacio en memoria sin tener la necesidad de ser consecutivos como lo es un array.
Un array sería mejor para la lectura ya que se conoce la posición exacta por el índice que tiene pero para escritura sería mejor una lista ya que no requiere mover todo ese espacio usado en memoria.
¿Alguien podría explicar más a profundidad este detalle?
pueden ser dinamicos o estaticos, en el primero, cuando crece todo el contenido es movido a una nueva locacion de memoria con suficiente espacio adyacente para almacenar el contenido viejo junto con el nuevo y la anterior locacion es liberada mientras los estaticos reservan el espacio desde el inicio y no cambia
Como un ninio aprendiendo ha hablar hahahah asi me siento
Los arreglos son una estructura de datos que nos sirve para guardar información de manera organizada. Como funcionan se le asigna indices númericos a los datos que dentro de este y un nombre general que relacionan la colección completa, por lo que para acceder a un dato hay que poner el nombre general y su indice entre corchetes. Ejemplo:
const fulano = [0,1,…]
fulano[0] // = 0
Tipos de array: los dinámicos y los estáticos en javascript los arrays por default son dinamicos , en otros lenguajes de programación como C, C#, C++, etc… existen lso arreglos estáticos los cuales son inmutables lo que quieres decir que el numero de datos especificados que estos tendran será el mismo numero de datos que tendran en todo el programa.
En la proxima clase trabajaremos con clases en JS y probablemente con otros temas más avanzados dentro del Lenguaje espero que hayas tomado todos los cursos específicados al principio de este y si aún así sientes problemas toma: curso profesional de javascript
Me queda clara la diferencia de que a los arrays estáticos podemos definir la longitud cuando los inicializamos, pero me confunde cuando habla de la mutación.
Supongo que quiere decir que no podemos agregar/remover ítems al tener una longitud fija, pero después en el minuto 4:55 dice que si es posible hacer esto y acá me confunde porque estos serian los arrays dinámicos.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?