Estructuras de Datos Resumen
Estructuras de Datos Resumen
Estructuras de Datos Resumen
REGISTRO
Un registro es una estructura de datos que engloba varios elementos (simples o estructurados)
y que contiene informacin relativa a un mismo ente. Cada unin informativa sobre un objeto
particular se denomina registro. A cada uno de los elementos del registro se le denomina
campo. Evidentemente, los campos pueden ser de un tipo estructurado.
Ejemplo:
La ficha de un empleado en una empresa puede ver como un registro con los siguientes
campos:
- NIF (string)
- Nombre (string)
- Apellido1 (string)
- Apellido2 (string)
- N_Hijos (entero)
- NSS (string)
- Fecha_Nacimiento (fecha)
donde tipo_fecha es otro registro con los campos:
- da (subrango 1..31)
- mes (subrango 1..12)
- ao (entero)
LISTAS.
Las flechas que aparecen en la figura son la representacin grfica de los valores de un tipo
de datos llamado puntero. Las variables de tipo puntero guardan direcciones de memoria. Para
cada elemento de la lista se almacena, junto a dicho elemento, un puntero que contiene la
direccin del elemento siguiente.
Si en una lista slo se permite aadir (push) y eliminar (pop) elementos por uno de los
extremos (la cima), hablamos de PILA o LIFO ( Last In, First Out).
Mtodos de Ordenamiento
1. Ordenacin por Seleccin
Este mtodo es muy sencillo y se trata de buscar el elemento ms pequeo del arreglo y
llevarlo a la primera posicin, luego se avanza a la siguiente posicin, y se coloca el elemento
ms pequeo del arreglo y as sucesivamente.
2. Ordenacin por Insercin
Este mtodo es capaz de mantener un arreglo ordenado insertando elementos en su
correspondiente posicin, por ejemplo si mi arreglo contiene los valores {1,3,4} y quiero insertar
un nuevo elemento 2, el arreglo quedar de esta forma {1,2,3,4}.
3. Ordenacin de Burbuja
Este es un mtodo de ordenacin elemental, que hace todas las comparaciones necesarias
para colocar un elemento en la posicin que le corresponde.
4. Ordenacin MergeSort
5. Ordenacin QuickSort, etc.
Mtodos de Bsqueda
1. Bsqueda Secuencial
Esta bsqueda realiza un recorrido lineal (uno por uno) por todos los elementos de un arreglo.
Es til cuando el tamao del arreglo no es grande y no tiende a crecer su nmero de
elementos.
2. Bsqueda Binaria
Dicha bsqueda es aplicable en arreglos ordenados, pues su Funcionamiento depende de este
hecho.
Cadenas.
Carcter. Un carcter ocupa 8 bits en memoria, y existen 256 caracteres diferentes.
Cadena. Una cadena o cadena de caracteres nos es ms que una serie de caracteres
manipulados como una unidad.
RECURSIVIDAD
Un algoritmo recursivo es un algoritmo que expresa la solucin de un problema en trminos
de una llamada a s mismo. La llamada a s mismo se conoce como llamada recursiva o
recurrente.
La recursividad es una tcnica de programacin importante. Se utiliza para realizar una llamada
a una funcin desde la misma funcin. La recursividad y la iteracin (ejecucin en bucle) estn
muy relacionadas, cualquier accin que pueda realizarse con la recursividad puede realizarse
con iteracin y viceversa.
RECURSIVIDAD VS ITERACIN
La recursividad y la iteracin (ejecucin en bucle) estn muy relacionadas, cualquier
accin que pueda realizarse con la recursividad puede realizarse con iteracin y
viceversa.
Tanto la iteracin como la recursin se basan en una estructura de control:
La iteracin utiliza una estructura repetitiva
La recursin utiliza una estructura de seleccin.
La iteracin y la recursin implican ambas repeticin:
La iteracin utiliza explcitamente una estructura repetitiva
La recursin consume la repeticin mediante llamadas repetidas.
La iteracin y la recursin implican cada una un test mientras que la recursin termina
cuando se reconoce un caso base o la condicin de salida se alcanza.
Factorial RECURSIVO
int f(int n) {
if (0==n)
3 return 1;
4 else
5 return n * f(n-1);
6}
1
2
Fibonacci RECURSIVO
int fib(int n) {
if (n<=2)
3 return 1;
4 else
5 return fib(n-1)+fib(n-2);
6}
1
2
funcion factorial(n)
si n=1 entonces
factorial = 1
sino
factorial = n * factorial(n-1)
fin funcin
return a+producto(a,b-1);
ALGORTIMOS DE ORDENAMIENTO
BURBUJA
Como lo describimos en el item anterior, la burbuja ms simple de todas es la que
compara todos con todos, generando comparaciones extras, por ejemplo, no tiene
sentido que se compare con sigo mismo o que se compare con los valores
anteriores a l, ya que supuestamente, ya estn ordenados.
BURBUJA OPTIMIZADA
Si al cambio anterior (el de la burbuja mejorada) le sumamos otro cambio, el
hecho que los elementos que estn detrs del que se est comparando, ya
estn ordenados, las comparaciones serian an menos y el mtodo sera an
ms efectivo.
INSERCIN y SELECCIN
Insercion(int matrix[])
{
int i, temp, j;
for (i = 1; i < matrix.length; i++)
{
temp = matrix[i];
j = i - 1;
while ( (matrix[j] > temp) && (j >= 0) )
{
matrix[j + 1] = matrix[j];
j--;
}
matrix[j + 1] = temp;
}
}
Seleccion(int[]matrix)
{
int i, j, k, p, buffer, limit = matrix.length-1;
for(k = 0; k < limit; k++)
{
p = k;
for(i = k+1; i <= limit; i++)
if(matrix[i] < matrix[p])
p = i;
if(p != k)
{
buffer = matrix[p];
matrix[p] = matrix[k];
matrix[k] = buffer;
}
}
}
El bucle principal de la ordenacin por insercin va examinando sucesivamente todos los
elementos de la matriz desde el segundo hasta el n-esimo, e inserta cada uno en el lugar
adecuado entre sus predecesores dentro de la matriz.
La ordenacin por seleccin funciona seleccionando el menor elemento de la matriz y
llevndolo al principio; a continuacin selecciona el siguiente menor y lo pone en la segunda
posicin de la matriz y as sucesivamente.
}
}
}
ORDENAMIENTO QUICKSORT
Sin duda, este algoritmo es uno de los ms eficientes. Este mtodo es el ms rpido
gracias a sus llamadas recursivas, basndose en la teora de divide y vencers.
Lo que hace este algoritmo es dividir recursivamente el vector en partes iguales,
indicando un elemento de inicio, fin y un pivote (o comodn) que nos permitir
segmentar nuestra lista. Una vez dividida, lo que hace, es dejar todos los mayores que
el pivote a su derecha y todos los menores a su izq. Al finalizar el algoritmo, nuestros
elementos estn ordenados.
COMPLEJIDAD
Complejidad
Complejidad
Complejidad
Complejidad
Jerarqua de funciones
Del punto de vista asinttico est dado por: