You are on page 1of 35

Heapsort y Hash

ESFM-IPN

Omar Heberto Jaimes Escamilla

Programacion II, 2017

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 1 / 35


Indice

1 Heapsort
Arboles binarios como listas
Explicacion Heapsort

2 Busqueda en Tablas Hash


Que es una tabla hash?
Tipos de hashing

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 2 / 35


Heapsort Arboles binarios como listas

Indice

1 Heapsort
Arboles binarios como listas
Explicacion Heapsort

2 Busqueda en Tablas Hash


Que es una tabla hash?
Tipos de hashing

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 3 / 35


Heapsort Arboles binarios como listas

Arboles binarios como listas

Consideremos un arbol como el que se muestra a continuacion y


enumeremos cada uno de sus vertices,comenzando en su raz y de
izquierda a derecha en los niveles posteriores.

Podemos ahora representar el arbol binario en una lista almacenando


cada nodo en la posicion en la que se ha enumerado el arbol. De lo
anterior podemos concluir que...

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 4 / 35


Heapsort Arboles binarios como listas

Encontrar los hijos del k-esimo nodo


Los hijos derechos e izquierdos del nodo de ndice k estan en los ndices 2k
y 2k+1, asumiendo que k comienza en uno donde el uno representa a la
raz.Si los ndices de los hijos exceden la cantidad total de nodos del
arbol,entonces los hijos no existen.

Definicion
Un heap (o montculo) se define como un arbol binario que satisface:
Es un arbol binario cuasicompleto,es decir, es posible que los nodos
del penultimo nivel no tengan hijo derecho e hijo derecho al mismo
tiempo.
Es un arbol binario cuasicompleto,es decir, es posible que los nodos
del penultimo nivel no tengan hijo derecho e hijo derecho al mismo
tiempo y el elemento en la raz es el menor (o mayor) de todos los
elementos que contiene el arbol,es decir,a sus hijos,siempre y cuando
sus hijos existan.
Los subarboles derecho e izquierdo de la raz son heaps.
Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 5 / 35
Heapsort Arboles binarios como listas

Requisitos para comprender el metodo de ordenacion


Heapsort

Si se busca ordenar los elementos en orden ascendente se utilizara un


heap tal que su raz contenga a un elemento menor a todos sus hijos.
A dicho heap se la llamar minHeap.
Si se busca ordenar los elementos en orden ascendente se utilizara un
heap tal que su raz contenga a un elemento mayor a todos sus hijos.
A dicho heap se la llamar maxHeap.
Una analoga apropiada para entender el maxHeap es observarlo como
si fuera un arbol de jerarqua de cargos de una empresa,de tal forma
que el nodo raz contiene al empleado responsable de todos los
demas,donde todos los demas empleados se hacen cargo exactamente
de dos empleados(salvo los del ultimo nivel del arbol).
En la implementacion realizada,se manejo el heap como un modo
particular de lista, muy similar a una cola de prioridad.
Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 6 / 35
Heapsort Explicacion Heapsort

Indice

1 Heapsort
Arboles binarios como listas
Explicacion Heapsort

2 Busqueda en Tablas Hash


Que es una tabla hash?
Tipos de hashing

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 7 / 35


Heapsort Explicacion Heapsort

Resumen del metodo de ordenacion Heapsort

Heapsort consiste en dos fases


Debemos acomodar los elementos de la representacion del heap de
tal forma que satisfagan los requerimientos del minHeap o maxHeap
segun sea el caso.
Debemos remover la raz del MinHeap (maxHeap) e insertarlo en
una nueva lista donde los elementos ya se encuentran o en orden
ascendente o descendente.
Remover el ultimo nodo del heap e insertarlo en la poscicion de
la raz.
Repetir el proceso hasta que el heap este vacio.

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 8 / 35


Heapsort Explicacion Heapsort

Ejemplo Heapsort

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 9 / 35


Heapsort Explicacion Heapsort

Ejemplo Heapsort

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 10 / 35


Heapsort Explicacion Heapsort

Ejemplo Heapsort

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 11 / 35


Heapsort Explicacion Heapsort

Ejemplo Heapsort

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 12 / 35


Heapsort Explicacion Heapsort

Ejemplo Heapsort

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 13 / 35


Heapsort Explicacion Heapsort

Ejemplo Heapsort

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 14 / 35


Heapsort Explicacion Heapsort

Ejemplo Heapsort

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 15 / 35


Heapsort Explicacion Heapsort

Ejemplo Heapsort

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 16 / 35


Heapsort Explicacion Heapsort

Ejemplo Heapsort

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 17 / 35


Heapsort Explicacion Heapsort

Codigo Heapsort

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 18 / 35


Heapsort Explicacion Heapsort

Codigo Heapsort

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 19 / 35


Heapsort Explicacion Heapsort

Codigo Heapsort

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 20 / 35


Heapsort Explicacion Heapsort

Codigo Heapsort

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 21 / 35


Busqueda en Tablas Hash Que es una tabla hash?

Indice

1 Heapsort
Arboles binarios como listas
Explicacion Heapsort

2 Busqueda en Tablas Hash


Que es una tabla hash?
Tipos de hashing

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 22 / 35


Busqueda en Tablas Hash Que es una tabla hash?

Una tabla hash es una estructura de datos que asocia llaves con un
valor numerico y donde las llaves suelen ser cadenas y son necesarias
para acceder a un cierto contenido.
Permite el acceso a los elementos almacenados a partir de la llave y
su numero asociado.
Son mas utiles cuando se almacenan grandes cantidades de
informacion.

La idea surge de los arreglos que nos permiten acceso a sus elementos
en orden O(1).

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 23 / 35


Busqueda en Tablas Hash Que es una tabla hash?

Definicion (Funcion hash)


Es una funcion H:UM de tal forma que su dominio son cadenas y su
imagen son usualmente numeros

El valor que devuelve la funcion hash es una representacion compacta


de la cadena y sirve para asignarle una posicion en la tabla hash.
Permite el acceso a los elementos almacenados a partir de la llave y
su numero asociado.
Son mas utiles cuando se almacenan grandes cantidades de
informacion.

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 24 / 35


Busqueda en Tablas Hash Que es una tabla hash?

Operaciones de la tabla hash

Search();
Insert();
Delete();

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 25 / 35


Busqueda en Tablas Hash Que es una tabla hash?

Propiedades de una buena funcion hash

Puede ocurrir que la funcion hash genere un mismo ndice para dos llaves
distintas. A esto se le conoce como colision.
Ser calculada rapidamente
Minimizar colisiones.

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 26 / 35


Busqueda en Tablas Hash Tipos de hashing

Indice

1 Heapsort
Arboles binarios como listas
Explicacion Heapsort

2 Busqueda en Tablas Hash


Que es una tabla hash?
Tipos de hashing

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 27 / 35


Busqueda en Tablas Hash Tipos de hashing

Hashing Abierto

Crea una lista asociada a cada entrada de la tabla hash.

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 28 / 35


Busqueda en Tablas Hash Tipos de hashing

Hashing Cerrado

Almacena las claves en la misma entrada de la tabla hash.


Al haber colisiones se recurre a una segunda funcion hash que
reasigne una nueva posicion a la llave.
Esta nueva funcion puede consistir en hacer un nuevo hashing,utilizar
aritmetica modular,etc para reasignar a la llave.
Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 29 / 35
Busqueda en Tablas Hash Tipos de hashing

Codigo Hashtable

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 30 / 35


Busqueda en Tablas Hash Tipos de hashing

Codigo Hashtable

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 31 / 35


Busqueda en Tablas Hash Tipos de hashing

Codigo Hashtable

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 32 / 35


Busqueda en Tablas Hash Tipos de hashing

Codigo Hashtable

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 33 / 35


Busqueda en Tablas Hash Tipos de hashing

Ejemplo Busqueda Hash

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 34 / 35


Bibliografa Bibliografa

Bibliografa I

Robert Kruse.
Data Structures and Program Design in C.
Prentice Hall, 1990.
Ejemplo grafico hashTable.
https:
//www.cs.usfca.edu/~galles/visualization/OpenHash.html

Omar Heberto Jaimes Escamilla Heapsort y Hash Programacion II, 2017 35 / 35

You might also like