TEMA 1: INTRODUCCIO INTRODUCCIO N (NO ENTRA EN EXAMEN) //NO TODOS LOS LENGUAJES INICIALIZAN LOS VALORES, JAVA LO HACE POR DEFECTO //OJO CON LOS == DE OBJETOS 1. UML
+ -> Se usa para indicar que es público (CONSTANTES) - -> Se usa para indicar que es privado. No tiene get ni set (ATRIBUTOS) ( ATRIBUTOS) # -> Se usa para indicar que es protegido NOMBRE de la Clase - Nombre Atributos + Constantes + Metodo(valor:int, index:bool): Boolean - Metodo2()
2. NORMAS DE ESTILO
Clases la 1ª letra con mayusculas m ayusculas Atributos y métodos la 1ª letra miniscula mi niscula Métodos compuestos separados por _ y con Mayuscula la 1ª de la 2ª palabra Constantes TODO en mayúsculas Comentar con JavaDoc
3. PILAS
Métodos siempre con complejidad O(1) y NUNCA varia var ia aunque haya diferente implementación Métodos o Size(), is_Empty(), top(), push(valor), pop() Implementación Arrays o Posición la indicas con un tope que esta indicando a la 1ª posición vacia Errores en la diapositiva Pop()-> 9 deberia estar fuera Errores en el código Top()-> return s[top-1] Push()-> falta else para println() o Lista enlazada Trabaja con punteros
// BUSCAR LA IMAGEN DE LA PILA (no la veo en la diapositiva)
???-> se traduce en -top:int –size:int –s: float[] La clase FloatNode tiene los atributos privados pero con get y set por lo tanto … es como si fueran públicos. NO ES UNA BUENA IMPLEMENTACION //ES MUCHO MAS EFICIENTE LINKEDLIST QUE ARRAY LIST SI HAY QUE ESTAR BORRANDO E INSERTANDO
4. COLAS
Toda implementación tiene que tener O(1) para eso lo que debe de hacer es tener una referencia a cabecera y final (tanto para estático como dinámico)
5. LISTAS
Estructura de datos mas compleja con infinitas operaciones. FloatArrayList o Elementos necesarios: size, lastelement, array
TEMA 2 – ARBOLES //RECUERDA POSITION solo tiene getValue() Metodos básicos
Size isEmpty Iterator -> para recorrer
Metodos de acceso
Position root Position parent (Position ) Position children(Position )
Metodos de consulta
isLeaf(Position) isInternal isRoot
Metodos de actualización
replace (position )
Recorrido de arboles -> NO SE PUEDE RECORRER EN INORDEN PARA RECORRER EN ANCHURA HACE FALTA UNA COLA RECORRIDO EN PROFUNDIDAD ES EL MISMO CODIGO QUE LA COLA PERO CON UNA PILA.
TEMA 2B- Arboles Binarios TEMA 3- TABLAS HASH Función hash crea un código hash, que es un numero entero y lo proyecta respecto al tamaño de la tabla (modulo tamaño tabla). El código hash es único pero el código dispersado si se puede crear repetido provocando colisiones, que tienen que ser el minimo. DIAPOSITIVA 20 ENTRA EN EXAMEN -> Ejercicio siguiente Inserta en una tabla hash de 13 elementos quiero insertar las entradas <18,A> <41,Y> <22,C> <44,D> <59,E> 1. Elegir función hash h(x) = x mod 13 2. <18,”A”> h(18) = 18 mod 13 = 5 -> se inserta en la posición 5 0
0
1
2
1
2 <41,Y>
3
4
5 6 <13,A> 3. Coges el siguiente valor <41,Y> =2 3
4
5 <13,A>
7
6
8
7
8
9
10
11
12
9
10
11
12
4. Coges el siguiente <44,D> = 5 0
1
2 3 <41,Y>
4
5 6 <13,A> <44,D>
7
8
9
10
11
12
Como es una lista no hay problema la lista tiene 2 atributos uno dupla, punturo a siguiente y primero estará 13,A en el segundo elemento estará 44,D El 75% para direccionamieto con listas (encabezamiento abierto) y el 50% en direccionamiento abierto para mantener el rendimiento optimo. El % es de elementos no de posiciones. Clustering secundario: series largas de posiciones ocupadas incrementan el tiempo medio de búsqueda
0
1
2
3 4 5 algo algo
6
7 8 Algo
9
10
11
12 13 algo
H(k,i) = h(k) + c1*i + c2*i2 siendo c1 = 0 y c2 = 1 k = x y h(k) = 3 Para i = 0 -> h(k,i) = 3 + 0 = 3 Para i = 1 -> 3 +1^1 = 4 Para i = 2 -> 3 + 2^2 = 7 Para I = 3 -> 3 + 3^2=12 Para I = 4 -> 3 + 4^2 = 19 -> 3 NO SE PUEDE AÑADIR EL NUMERO CLUSTERING SECUNDARIO
5.
AVL
6.
Diccionarios ordenados
//Ejercicio de borra todos los elementos que tienen una misma clave
Arboles binario búsqúeda Ejercicios
7.
8.
Arboles rojo-negro
La altura se mide en función de los nodos que sean negros. Los punteros a null cuentan como negros. La raíz es nodo negro Los hijos de un nodo rojo son negros Todas las hojas tienen la misma profundidad negra
14
15
Nunca hay 2 rojos seguidos Al insertar un nodo, salvo la raíz (negro) son ROJOS, eso es lo que provoca desequilibrios, 2 rojos seguidos y se llama desequilibrio doblerojo. DOBLE ROJO
Los nodos involucrados son el insertado, el padre, el abuelo, los hermanos y los tios. 1. Hay que mirar al tio a. Es rojo 2. pintar padre y tio de negro y el abuelo de rojo, SALVO LA RAIZ QUE SIEMPRE ES NEGRA b. Es negro 2. Reestructuración trinodo: es decir como si fuera un avl, OJO que al rotar solo modificas los valores, el color de los nodos es b negro y a y c de rojo.
//ESCANEAR EJERCICIO DE ARBOLES ROJO NEGRO BORRADOS EN UN ARN
Se hace igual que los ABB lo que pasa es que también pueden producirse problemas.
Si borro un nodo rojo no pasa nada Si borro un nodo negro con un único hijo rojo, el valor de ese nodo rojo pasa a ser el valor del nodo negro Si borro un nodo negro con 2 hijos. Hay que asignar un doble negro. 3 situaciones Para saber el caso mirar a los sobrinos. o Caso 1: el hermano del doble negro, si es negro y tiene un hijo rojo Aplicar reestructuración trinodo (sobrino,hermano y abuelo) A y c de negro B el color del abuelo El del doble negro es simple negro
o
o
Caso 2: el hermano es negro y sus 2 hijos son negros Recoloreado de r como negro e y como rojjo Si X es rojo se ilumina de rojo
Caso 3: el hermano es rojo Si y es el h_der de x, z es el h_der de y Si y es el h_izq de x, z es el h_izq de y Colorear y de negro y x de rojo
//ESCANEAR HOJA 1 DEL CUADERNILLO -> mirar también la web de las diapositivas