Está en la página 1de 3

BLOQUE II

TEMA 3: ESTRUCTURAS DE DATOS


TAD: Tipo abstracto de datos.
- Una estructura de datos y los métodos para operar sobre ella.
- Un ejemplo podría ser un objeto de java, tiene datos, métodos y todo está encapsulado para
restringir el acceso.
- Ejemplo: Una pila y los métodos apilar, desapilar, ordenar,…
Estructura de Datos: Métodos que permiten un almacenamiento eficiente de la información.
- Internas:
o Estáticas
 Arrays/Matrices.
 Registros, uniones.
o Dinámicas:
 Contenedores de secuenciales.
 Listas.
 Pilas.
 Colas.
 Árboles.
 Grafos.
- Externas:
o Ficheros.
o BBDD.
Registros: Estructuras estáticas de tipos diferentes (campos).
Uniones: Registros donde además los datos ocupan el mismo espacio en memoria.
Arrays: Secuencia contigua de elementos (tamaño fijo), si tienes más de una dimensión se llama matriz.
Los datos se almacenan consecutivamente en memoria.
Ej: int x[5] --- array de 5 elementos enteros, int x [4][3][6] --- matriz de tres dimensiones de enteros.
Punteros: Variables que almacenan una dirección de memoria. (Utilizados a bajo nivel). No necesitan
reservar memoria. * : Para acceder al contenido. &: Para acceder a la dirección de memoria.

&p  E8F2, *p  5

Listas: estructura de datos secuencial dinámica (sin tamaño fijo).

Pilas (LIFO): Last In, First Out --- Último en entrar primero en salir.
Colas (FIFO): First In, First Out --- Primero en entrar, primero en salir.
Push (meter dato), Pop (sacar dato), Top (primer elemento)
Árboles:
- Raíz: elemento que no tiene antecesor.
- Rama: arista entre dos nodos.
- Grado: número de descendientes directos.
- Hoja: nodo sin descendientes.
- Nivel: número de nodos que hay que recorrer para llegar a la raíz.
- Árbol equilibrado: todos los nodos del subárbol izquierdo y del subárbol derecho tienen el
mismo nivel o se diferencia como mucho en 1.
- Árbol binario: un máximo de dos hijos por nodo.
- Árbol AVL: árbol binario ordenado.
- Árbol B+: árbol binario con los nodos hoja enlazados en una lista. Muy útil para búsquedas.
- Recorridos árbol binario:
o Preorden: Nodo – Izquierda – Derecha. preorden: a,b,d,c,e,f
o Inorden: Izquierda – Nodo – Derecha. inorden: d,b,a,e,c,f
o Postorden: Izquierda – Derecha – Nodo. postorden: d,b,a,e,f,c
o Amplitud: recorrer los nodos por niveles. amplitud: a,b,c,d,e,f

Grafos: árboles no jerárquicos. Las ramas pueden o no tener peso.

Algoritmo: secuencia lógica de pasos a seguir para obtener una solución.


- Orden de complejidad de menor a mayor:
O(1) – O(log n) – O(n) – O(n log n) – O (n2) – O (nn) – O(n!) – O(2n)
- O(1): constante, O(log n): logarítmica, O(n): lineal, O(n2): cuadrática, O(n!): factorial
- Tipos:
o Búsqueda.
 Secuencial.
 Binaria o dicotómica.
 Transformación de claves o Hash.
o Ordenación.
 Lugar.
 Interno.
o Selección.
o Inserción.
o Burbuja.
 Externo.
 Tiempo.
 Natural.
 No natural.
 Estabilidad.
 Estables (al reordenar elementos iguales mantienen su ordenación
previa).
 No estables.
- Algoritmo de búsqueda:
o Secuencial: Examinar uno a uno los elementos del array hasta dar con el buscado. Si
el array se encuentra ordenado se puede optimizar. O(n)
o Binaria o dicotómica: Sólo se puede aplicar a arrays ordenados. Buscamos el
elemento central, si el elemento buscado es mayor miramos a la derecha y si es menor
a la izquierda. Repetir la operación con el subarray hasta localizar el elemento. O(log n)
o Transformación de claves (hashing): Asignas a cada elemento un índice, sacado de
una función de conversión (función hash). Cuando se quiera buscar algo usamos esos
índices para saber dónde buscar.
- Algoritmo de ordenación interna:
o Heapsort (montículo): Recursivo, no estable. Se utiliza un montículo que contiene el
menor/mayor elemento, en una segunda iteración se ordenan los elementos usando
dicho montículo. O(n log n)
o Mergesort (mezcla): Recursivo, estable. Separar en 2 partes un vector, ordenar por
separado cada una de las partes y luego mezclarlas manteniendo la ordenación.
O(n log n)
o Selección: Se busca el elemento más pequeño y se pone en la primera posición, se
repite el proceso con el resto. O(n2)
o Burbuja (bubblesort): Comparar pares de elementos adyacentes e intercambiarlos
entre si hasta ordenar todos. O(n2)
o Shellsort: Comparar el elemento con el de un número de posiciones, según va
actuando va acortando el salto. O(n log n)
o Quicksort (rápido): Se utiliza un pivote, los elementos menores se pasan a un lado y
los mayor al otro. Se repite el proceso en cada uno de los lados n veces. Divide y
vencerás. O(n log n).
o Radix sort: Se ordena el array descomponiendo los números en dígitos, de más a
menos significativos. Limitado sólo a enteros. O(k n)
Organización de ficheros:
- Sistema de archivos (file system): estructura de directorios con algún tipo de organización que
permita almacenar, crear y borrar archivos en diferentes formatos.
- Fichero: conjunto de registros que pueden ser leídos por el ordenador.
- Bloque (registro físico): cantidad de información transferida entre ficheros y memoria principal
en una sola operación.
- Factor de blocaje: número de registros que entran en un bloque.
- Bloqueo de registros: agrupar varios registros en un bloque.
- Fichero multivolumen: ficheros muy grandes que no entran en un único soporte.
- Tipo de acceso:
o Secuencial: recorrer uno a uno hasta encontrar el buscado (cintas).
 Los registros se van grabando unos a continuación de otros, sin dejar huecos.
Orden lógico = orden físico.
 Ventajas:
 Aprovecha al máximo el espacio.
 Acceso secuencial inmediato.
 Puede utilizar cualquier tipo de registro.
 Inconvenientes:
 Sólo se permite acceso secuencial.
 No se puede insertar entre medias de dos registros.
 Para borrar es necesario hacer una copia.
o Secuencial encadenado: Exactamente igual que el secuencial pero utilizando listas
dinámicas.
o Organización secuencial indexada: organización secuencial, apoyada en el uso de
índices para acceder directamente al registro.
 Parecido a un libro con un índice de capítulos.
 Necesita un campo clave que identifique cada registro de forma única.
 Organización de índices:
 ISAM (indexed Sequential Access Method)
 VSAM (Virtual Storage Access Method)
 Ventajas:
 Permite accesos secuenciales y directos.
 Se puede actualizar sin necesidad de copia.
 Inconvenientes:
 Ocupan más espacio.
 Tiende aumentar el tiempo de acceso.
 No soportan bidireccionales.

o Directo (Random): se puede acceder a cualquier sector inmediatamente (discos


duros).
 La posición en la que se graban los registros está en función de la información
que tenga el campo clave del registro.
 Colisión: cuando dos claves dan la misma dirección.
 Solución:
o Al primer hueco libre. (búsqueda lineal)
o A una zona especial del fichero. (overflow)
 Clasificación de direccionamiento:
 Directo: fichero facturas donde la clave es el número de factura.
 Asociación: la clave se almacena en una tabla de memoria.
 Aleatorio (hashing): una función que relacione sin equivocación la
clave con el registro.
 Ventajas:
 Más rápido.
 Permite actualización de ficheros.
 Permite actualización en tiempo real.
 Inconvenientes:
 No permite acceso secuencial.
 Necesita de tratamiento de colisiones.
 Desaprovecha mucho espacio.

También podría gustarte