02 - Analisis de Algoritmos - 2 - 2
02 - Analisis de Algoritmos - 2 - 2
02 - Analisis de Algoritmos - 2 - 2
9 2 0
Ejemplo: Algoritmo Heap Sort (monticulos)
Posición del ultimo elemento del arreglo
n = len – 1 = 9
0 1 2 3 4 5 6 7 8 9
Posición del ultimo padre
posPadre = (n-1)/2 = 8/2 = 4 5 8 6 1 4 7 3 9 2 0
posIzq(i) = 2*i+1 5 8 6 9 4 7 3 1 2 0
posDer(i) = 2*i+2
5 8 7 9 4 6 3 1 2 0
9 5 9 7 8 4 6 3 1 2 0
9 5 7 8 4 6 3 1 2 0
5 7
0 5 7 8 4 6 3 1 2 9
8 4 6 3
1 2 0
Ejemplo: Algoritmo Heap Sort (monticulos)
Posición del ultimo elemento del arreglo Posición del ultimo elemento del arreglo Posición del ultimo elemento del arreglo
n = len – 1 = 8 n = len – 1 = 7 n = len – 1 = 6
Posición del ultimo padre Posición del ultimo padre Posición del ultimo padre
posPadre = (n-1)/2 = 3 posPadre = (n-1)/2 = 3 posPadre = (n-1)/2 = 3
posIzq(i) = 2*i+1 posIzq(i) = 2*i+1 posIzq(i) = 2*i+1
posDer(i) = 2*i+2 posDer(i) = 2*i+2 posDer(i) = 2*i+2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 5 7 8 4 6 3 1 2 9 2 0 7 5 4 6 3 1 8 9 1 2 6 5 4 0 3 7 8 9
0 5 7 8 4 6 3 1 2 9 2 0 7 5 4 6 3 1 8 9 1 5 6 2 4 0 3 7 8 9
0 8 7 5 4 6 3 1 2 9 2 7 0 5 4 6 3 1 8 9 6 5 1 2 4 0 3 7 8 9
8 0 7 5 4 6 3 1 2 9 7 2 0 5 4 6 3 1 8 9 3 5 1 2 4 0 6 7 8 9
2 0 7 5 4 6 3 1 8 9 1 2 0 5 4 6 3 7 8 9
Ejemplo: Algoritmo Heap Sort (monticulos)
Posición del ultimo elemento del arreglo Posición del ultimo elemento del arreglo Posición del ultimo elemento del arreglo
n = len – 1 = 5 n = len – 1 = 4 n = len – 1 = 3
Posición del ultimo padre Posición del ultimo padre Posición del ultimo padre
posPadre = (n-1)/2 = 2 posPadre = (n-1)/2 = 1 posPadre = (n-1)/2 = 1
posIzq(i) = 2*i+1 posIzq(i) = 2*i+1 posIzq(i) = 2*i+1
posDer(i) = 2*i+2 posDer(i) = 2*i+2 posDer(i) = 2*i+2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
3 5 1 2 4 0 6 7 8 9 0 4 1 2 3 5 6 7 8 9 3 2 1 0 4 5 6 7 8 9
3 5 1 2 4 0 6 7 8 9 4 0 1 2 3 5 6 7 8 9 3 2 1 0 4 5 6 7 8 9
5 3 1 2 4 0 6 7 8 9 3 0 1 2 4 5 6 7 8 9 0 2 1 3 4 5 6 7 8 9
0 3 1 2 4 5 6 7 8 9
Ejemplo: Algoritmo Heap Sort (monticulos)
Posición del ultimo elemento del arreglo Posición del ultimo elemento del arreglo
n = len – 1 = 2 n = len – 1 = 1
Posición del ultimo padre Posición del ultimo padre
posPadre = (n-1)/2 = 1 posPadre = (n-1)/2 = 1
posIzq(i) = 2*i+1 posIzq(i) = 2*i+1
posDer(i) = 2*i+2 posDer(i) = 2*i+2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 2 1 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0
2 0 1 3 4 5 6 7 8 9
1 2
1 0 2 3 4 5 6 7 8 9
3 4 5 6
7 8 9
Algoritmo Heap Sort
Dinámica N° 3
En grupo proceda a realizar una comparación del tiempo de ejecución
de los 3 algoritmos: Quick Sort, Merge Sort y Heap Sort
Complejidad: O(n)
Búsqueda binaria recursiva
Para este algoritmo:
Cada llamada genera una llamada recursiva (s=1)
El tamaño del subproblema es la mitad del problema original (b=2)
Sin considerar la recurrencia el resto de operaciones son O(1) luego g(n) es O(1) =
O(n0) (k=0)
Luego t(n) es O(nk log n) = Θ(n0 log n) = Θ(log n)
Ejemplo: Búsqueda binaria
Búsqueda de x=9