
Consejo del día
El descanso mental es parte del estudio, no lo contrario. Un cerebro en calma retiene más.


Consejo del día
El descanso mental es parte del estudio, no lo contrario. Un cerebro en calma retiene más.
Prácticos · Tema 11
Pulsa “Ver solución” en cada pregunta para desplegar el guion de respuesta. Intenta redactar primero tu propia respuesta. Leer el tema desarrollado →
3. El vector
Defina el vector (propiedades y fórmula de direccionamiento) y analice el coste de sus operaciones. Resuelva: (a) dirección del componente 7 de un vector de reales de 8 bytes con base 5000 e índices desde 0; (b) comparaciones máximas de la búsqueda binaria sobre un millón de componentes; (c) por qué insertar en cabeza es O(n) y qué tácticas lo mitigan.
4-5. Matrices
Explique la linealización de matrices (orden por filas y por columnas, fórmula de acceso) y su impacto en el rendimiento por la localidad y la caché. Calcule la dirección del componente (2,3) de una matriz 10×20 de enteros de 4 bytes con base 1000 (por filas, desde 0) y proponga el almacenamiento óptimo para una matriz simétrica y para una dispersa.
6. El registro
Caracterice el registro frente al array (heterogeneidad, acceso por nombre, desplazamientos fijos, alineación) y desarrolle sus combinaciones: vector de registros frente a registro de vectores (AoS vs SoA), registros con variantes y uniones, y su papel como precedente de la fila de la tabla relacional y del fichero de registros de longitud fija.
Pregunta corta
Defina tipo abstracto de datos (TAD).
Especificación de operaciones y garantías con independencia de la implementación: la pila es un TAD implementable sobre vector o sobre lista enlazada.
Pregunta corta
Dos ventajas y dos inconvenientes de las estructuras estáticas.
Ventajas: acceso directo O(1) y localidad/contigüidad (sin memoria de enlaces). Inconvenientes: tamaño fijo e inserciones/borrados con desplazamientos O(n).
Pregunta corta
Escriba la fórmula de acceso a un vector y a una matriz por filas.
dir(i) = b + (i − i0) × t; dir(i,j) = b + (i × nColumnas + j) × t.
Pregunta corta
¿Por qué el orden de los bucles cambia el tiempo al recorrer una matriz?
Por la localidad: en row-major, recorrer por filas visita direcciones consecutivas (caché); por columnas salta bloques y multiplica los fallos de caché.
Pregunta corta
¿Cuántos componentes almacena una matriz simétrica optimizada?
n(n+1)/2 (el triángulo inferior con la diagonal), en lugar de n².
Pregunta corta
¿Qué es una lookup table o tabla de consulta?
Un vector donde el valor buscado es (o deriva de) el índice: búsqueda directa O(1); semilla de la idea de dispersión (hashing).
Pregunta corta
¿Cómo logra un array redimensionable añadir por el final en O(1) amortizado?
Al llenarse duplica la capacidad y copia; el coste de las copias se reparte entre muchas inserciones baratas.
Pregunta corta
¿Qué sorpresa da asignar un array a otra variable en muchos lenguajes?
Se copia la referencia, no el contenido: ambas variables comparten la estructura y las modificaciones se ven por las dos.