Cap 05 - Métodos de Ordenamiento y de Búsqueda
-
Upload
jesusmiguel23 -
Category
Documents
-
view
1.619 -
download
0
Transcript of Cap 05 - Métodos de Ordenamiento y de Búsqueda
![Page 1: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/1.jpg)
Métodos de Ordenamiento y de Búsqueda
Prof. Robert Espinoza
![Page 2: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/2.jpg)
Métodos de Ordenamiento
![Page 3: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/3.jpg)
Ordenar significa reagrupar o reorganizar un conjunto de datos u objetos en una secuencia específica.
Formalmente se define de la siguiente manera: Sea A una lista de elementos
A1, A2, A3, …, An Ordenar es clasificar estos elementos para que queden
según una distribución establecida. Ascendente:
A1 ≤ A2 ≤ A3 ≤ … ≤ An Descendente:
A1 ≥ A2 ≥ A3 ≥ … ≥ An
Introducción
![Page 4: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/4.jpg)
Ordenación interna Los elementos se encuentran en la memoria principal de
la computadora. También conocida como ordenación de arreglos.
Ordenación externa Los elementos se encuentran almacenados en
dispositivos de almacenamiento secundario (discos, cintas, etc.)
También se le conoce como ordenación de archivos.
Introducción
![Page 5: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/5.jpg)
Ordenación Interna
Métodos directos (n2) Implementación relativamente sencilla. Fáciles de comprender. Ineficientes cuando “n” es mediano o grande.
Métodos logarítmicos (n*log n) Más complejos y menos intuitivos Elaboración más sofisticada Difíciles de comprender Son más eficientes pues requieren de menos
comparaciones y movimientos para clasificar los elementos.
![Page 6: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/6.jpg)
Ordenación Interna
En conclusión: Cuando N es pequeño deben utilizarse métodos
directos. Cuando N es mediano o grande deben emplearse
métodos logarítmicos.
![Page 7: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/7.jpg)
Ordenación por intercambio (Burbuja)
Para un ordenamiento ascendente, podemos trabajar de dos formas diferentes: Llevar los elementos menores hacia la parte
izquierda del arreglo, o Desplazar los elementos mayores hacia la derecha.
En el caso de una clasificación descendente se opera de manera contraria. Llevar los elementos mayores hacia la parte
izquierda del arreglo, o Desplazar los elementos menores hacia la derecha.
Es quizás el método más ineficiente.
![Page 8: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/8.jpg)
Ordenación por intercambio (Burbuja)
Consiste básicamente en lo siguiente: Comparar pares de elementos adyacentes e
intercambiarlos entre sí hasta que todos se encuentren ordenados.
Se realizan (n-1) pasadas transportando en cada una de ellas el mayor o menor elemento, según sea el caso a su posición ideal.
Al final de las (n-1) pasadas los elementos estarán ordenados
![Page 9: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/9.jpg)
Ordenación por intercambio (Burbuja)
Ordenación ascendente llevando el menor a la izquierda. Comparamos los elementos adyacentes
comenzando con el penúltimo y último elementos. Intercambiamos si un elemento es mayor que el
siguiente, es decir vamos desplazando el menor a la izquierda.
Retrocedemos hasta llegar al primer elemento en la primera pasada, al segundo en la segunda pasada y así sucesivamente.
Finalmente el arreglo quedará ordenado.
![Page 10: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/10.jpg)
Ordenación por intercambio (Burbuja)
15 67 8 16 44 27 12 35
Ejemplo: Ordenar ascendentemente llevando el menor a la izquierda
![Page 11: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/11.jpg)
Ordenación por intercambio (Burbuja)
15 67 8 16 44 27 12 35
15 67 8 16 44 27 12 35
15 67 8 16 44 12 27 35
15 67 8 16 12 44 27 35
15 67 8 12 16 44 27 35
15 67 8 12 16 44 27 35
15 8 67 12 16 44 27 35
8 15 67 12 16 44 27 35
A[6] > A[7]
A[5] > A[6]
A[4] > A[5]
A[3] > A[4]
A[1] > A[2]
A[2] > A[3]
A[0] > A[1]
No intercambio
Intercambio
Intercambio
Intercambio
Intercambio
Intercambio
No intercambio
Primera pasada
![Page 12: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/12.jpg)
Ordenación por intercambio (Burbuja)
8 15 67 12 16 44 27 35
8 15 67 12 16 44 27 35
8 15 67 12 16 27 44 35
8 15 67 12 16 27 44 35
8 15 67 12 16 27 44 35
8 15 12 67 16 27 44 35
8 12 15 67 16 27 44 35
A[6] > A[7]
A[5] > A[6]
A[4] > A[5]
A[3] > A[4]
A[1] > A[2]
A[2] > A[3]
No intercambio
Intercambio
No intercambio
No intercambio
Intercambio
Intercambio
Segunda pasada
![Page 13: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/13.jpg)
Ordenación por intercambio (Burbuja)
8 12 15 67 16 27 44 35
8 12 15 67 16 27 35 44
8 12 15 67 16 27 35 44
8 12 15 67 16 27 35 44
8 12 15 16 67 27 35 44
8 12 15 16 67 27 35 44
A[6] > A[7]
A[5] > A[6]
A[4] > A[5]
A[3] > A[4]
A[2] > A[3]
Intercambio
No intercambio
No intercambio
Intercambio
No intercambio
Tercera pasada
![Page 14: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/14.jpg)
Ordenación por intercambio (Burbuja)
8 12 15 16 67 27 35 44
8 12 15 16 67 27 35 44
8 12 15 16 67 27 35 44
8 12 15 16 27 67 35 44
8 12 15 16 27 67 35 44
A[6] > A[7]
A[5] > A[6]
A[4] > A[5]
A[3] > A[4]
No intercambio
No intercambio
Intercambio
No intercambio
Cuarta pasada
![Page 15: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/15.jpg)
Ordenación por intercambio (Burbuja)
8 12 15 16 27 67 35 44
8 12 15 16 27 67 35 44
8 12 15 16 27 35 67 44
8 12 15 16 27 35 67 44
A[6] > A[7]
A[5] > A[6]
A[4] > A[5]
No intercambio
Intercambio
No intercambio
Quinta pasada
![Page 16: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/16.jpg)
Ordenación por intercambio (Burbuja)
8 12 15 16 27 35 67 44
8 12 15 16 27 35 44 67
8 12 15 16 27 35 44 67
A[6] > A[7]
A[5] > A[6]
Intercambio
No intercambio
Sexta pasada
![Page 17: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/17.jpg)
Ordenación por intercambio (Burbuja)
8 12 15 16 27 35 44 67
8 12 15 16 27 35 44 67
A[6] > A[7] No intercambio
Sétima pasada
![Page 18: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/18.jpg)
Ordenación por intercambio (Burbuja)
Algoritmo de ordenación pasando el menor hacia la izquierda
Método Burbuja_menor(A,N)
Para I desde 1 hasta N-1 hacer
Para J desde N-1 hasta I
Si A(J-1) > A(J) entonces
aux A[J-1]
A[J-1] A[J]
A[J] aux
FinSi
FinPara
FinPara
Fin Método
![Page 19: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/19.jpg)
Ordenación por intercambio (Burbuja)
15 67 8 16 44 27 12 35
Ejemplo: Ordenar ascendentemente pasando el mayor hacia la parte derecha
![Page 20: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/20.jpg)
Ordenación por intercambio (Burbuja)
15 67 8 16 44 27 12 35
15 67 8 16 44 27 12 35
15 8 67 16 44 27 12 35
15 8 16 67 44 27 12 35
15 8 16 44 67 27 12 35
15 8 16 44 27 67 12 35
15 8 16 44 27 12 67 35
15 8 16 44 27 12 35 67
A[0] > A[1]
A[1] > A[2]
A[2] > A[3]
A[3] > A[4]
A[5] > A[6]
A[4] > A[5]
A[6] > A[7]
No intercambio
Intercambio
Intercambio
Intercambio
Intercambio
Intercambio
Intercambio
Primera pasada
![Page 21: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/21.jpg)
Ordenación por intercambio (Burbuja)
15 8 16 44 27 12 35 67
8 15 16 44 27 12 35 67
8 15 16 44 27 12 35 67
8 15 16 44 27 12 35 67
8 15 16 27 44 12 35 67
8 15 16 27 12 44 35 67
8 15 16 27 12 35 44 67
A[0] > A[1]
A[1] > A[2]
A[2] > A[3]
A[3] > A[4]
A[5] > A[6]
A[4] > A[5]
Intercambio
No intercambio
No intercambio
Intercambio
Intercambio
Intercambio
Segunda pasada
![Page 22: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/22.jpg)
Ordenación por intercambio (Burbuja)
8 15 16 27 12 35 44 67
8 15 16 27 12 35 44 67
8 15 16 27 12 35 44 67
8 15 16 27 12 35 44 67
8 15 16 12 27 35 44 67
8 15 16 12 27 35 44 67
A[0] > A[1]
A[1] > A[2]
A[2] > A[3]
A[3] > A[4]
A[4] > A[5]
No intercambio
No intercambio
No intercambio
Intercambio
No intercambio
Tercera pasada
![Page 23: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/23.jpg)
Ordenación por intercambio (Burbuja)
8 15 16 12 27 35 44 67
8 15 16 12 27 35 44 67
8 15 16 12 27 35 44 67
8 15 12 16 27 35 44 67
8 15 12 16 27 35 44 67
A[0] > A[1]
A[1] > A[2]
A[2] > A[3]
A[3] > A[4]
No intercambio
No intercambio
Intercambio
No intercambio
Cuarta pasada
![Page 24: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/24.jpg)
Ordenación por intercambio (Burbuja)
8 15 12 16 27 35 44 67
8 15 12 16 27 35 44 67
8 12 15 16 27 35 44 67
8 12 15 16 27 35 44 67
A[0] > A[1]
A[1] > A[2]
A[2] > A[3]
No intercambio
Intercambio
No intercambio
Quinta pasada
![Page 25: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/25.jpg)
Ordenación por intercambio (Burbuja)
8 12 15 16 27 35 44 67
8 12 15 16 27 35 44 67
8 12 15 16 27 35 44 67
A[0] > A[1]
A[1] > A[2]
No intercambio
No intercambio
Sexta pasada
![Page 26: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/26.jpg)
Ordenación por intercambio (Burbuja)
8 12 15 16 27 35 44 67
8 12 15 16 27 35 44 67
A[0] > A[1] No intercambio
Sétima pasada
![Page 27: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/27.jpg)
Ordenación por intercambio (Burbuja)
Algoritmo de ordenación pasando el menor hacia la izquierda
Método Burbuja_mayor(A,N)
Para I desde N-2 hasta 0 hacer
Para J desde 0 hasta I
Si A(J) > A(J+1) entonces
aux A[J]
A[J] A[J+1]
A[J+1] aux
FinSi
FinPara
FinPara
Fin Método
![Page 28: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/28.jpg)
Análisis de eficiencia del Método por intercambio (Burbuja)
Número de comparaciones: Primera pasada: (n-1), segunda pasada: (n-2), tercera
pasada: (n-3) y así sucesivamente hasta llegar a 2 y 1. Por lo tanto el número de comparaciones C es:
2
2
)1(*12)2()1(
2 nnC
nnnnC
![Page 29: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/29.jpg)
Análisis de eficiencia del Método por intercambio (Burbuja)
El número de movimientos o intercambios dependen de si el arreglo se encuentra: En orden inverso (caso peor)
Mmáx = 3 * (n2 – n) / 2 = 1.5 * (n2 – n) Desordenado o aleatorio (caso medio)
Mmed = 0.75 * (n2 – n)
Ordenado (caso mejor)
Mmín = 0
El tiempo necesario para ejecutar el algoritmo de la burbuja es proporcional a n2
T(n) = O(n2)
![Page 30: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/30.jpg)
Análisis de eficiencia del Método por intercambio (Burbuja)
Por ejemplo si son 100 elementos a ordenar tenemos Caso mejor (Ordenado)
4,950 comparaciones 0 movimientos
Caso medio (aleatorio) 4,950 comparaciones 7,425 movimientos
Caso peor (en orden inverso) 4,950 comparaciones 14,850 movimientos
![Page 31: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/31.jpg)
Es una modificación del método de la burbuja con la finalidad de terminar la ejecución del algoritmo en caso se compruebe que el arreglo ya está ordenado después de una pasada.
La idea central es utilizar una señal o marca para indicar que no se ha producido ningún intercambio en una pasada, lo que comprueba que el arreglo está completamente ordenado.
Método de intercambio con señal (flag)
![Page 32: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/32.jpg)
Método Burbuja_señal (A,N)
i 1, flag VERDADERO
Mientras i <= N-1 y flag = VERDADERO hacer
flag FALSO
Para j desde 0 hasta n-2 hacer
Si A[ j ] > A[ j+1 ] entonces
aux A[ j ], A[ j ] A [ j+1], A[ j+1] aux
flag VERDADERO
Fin Si
FinPara
i i + 1
FinMientras
Fin Método
Método de intercambio con señal (flag)
![Page 33: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/33.jpg)
Ordenación por Inserción directa
También conocido como Método de la Baraja por ser el que usan los jugadores de cartas para ordenar la baraja.
La idea central consiste en insertar un elemento en su parte izquierda, que ya se encuentra ordenada. Este proceso se repite desde el segundo hasta el último elemento.
![Page 34: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/34.jpg)
Ordenación por Inserción directa
15 67 8 16 44 27 12 35
Por ejemplo, ordenar ascendentemente usando el método de inserción directa
![Page 35: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/35.jpg)
Ordenación por Inserción directa
15 67 8 16 44 27 12 35
15 67 8 16 44 27 12 35
A[1] < A[0] No intercambio
Primera pasada
![Page 36: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/36.jpg)
Ordenación por Inserción directa
15 67 8 16 44 27 12 35
15 8 67 16 44 27 12 35
8 15 67 16 44 27 12 35
A[2] < A[1]
A[1] < A[0]
Intercambio
Intercambio
Segunda pasada
![Page 37: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/37.jpg)
Ordenación por Inserción directa
8 15 67 16 44 27 12 35
8 15 16 67 44 27 12 35
8 15 16 67 44 27 12 35
A[3] < A[2]
A[2] < A[1]
Intercambio
No Intercambio
Tercera pasada
![Page 38: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/38.jpg)
Ordenación por Inserción directa
8 15 16 67 44 27 12 35
8 15 16 44 67 27 12 35
8 15 16 44 67 27 12 35
A[4] < A[3]
A[3] < A[2]
Intercambio
No Intercambio
Cuarta pasada
![Page 39: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/39.jpg)
Ordenación por Inserción directa
8 15 16 44 67 27 12 35
8 15 16 44 27 67 12 35
8 15 16 27 44 67 12 35
A[5] < A[4]
A[4] < A[3]
Intercambio
Intercambio
Quinta pasada
A[3] < A[2] No Intercambio
8 15 16 27 44 67 12 35
![Page 40: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/40.jpg)
Ordenación por Inserción directa
8 15 16 27 44 67 12 35
8 15 16 27 44 12 67 35
8 15 16 27 12 44 67 35
A[6] < A[5]
A[5] < A[4]
Intercambio
Intercambio
Sexta pasada
A[4] < A[3] Intercambio
8 15 16 12 27 44 67 35 A[3] < A[2] Intercambio
8 15 12 16 27 44 67 35 A[2] < A[1] Intercambio
8 12 15 16 27 44 67 35 A[1] < A[0] No intercambio
8 12 15 16 27 44 67 35
![Page 41: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/41.jpg)
Ordenación por Inserción directa
8 12 15 16 27 44 67 35
8 12 15 16 27 44 35 67
8 12 15 16 27 35 44 67
A[7] < A[6]
A[6] < A[5]
Intercambio
Intercambio
Sétima pasada
A[5] < A[4] No intercambio
8 12 15 16 27 35 44 67
![Page 42: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/42.jpg)
Método Inserción (A,N)
Para i desde 1 hasta N-1 hacer
aux A[ i ]
k i - 1
Mientras (k >= 0) y (aux < A[ k ]) hacer
A[ k+1 ] A[ k ]
k k - 1
FinMientras
A[ k+1 ] aux
FinPara
Fin Método
Ordenación por Inserción directa
![Page 43: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/43.jpg)
El número mínimo de comparaciones y movimientos sucede cuando los elementos ya está ordenados Número de comparaciones
Cmín = n – 1 Número de movimientos.
Mmín = 0
El número máximo de comparaciones y movimientos entre elementos se da cuando los elementos del arreglo están en orden inverso. Número de comparaciones
Cmáx = 1 + 2 + … + (n-1) = n * (n-1) / 2 = (n2 – n) / 2
Número de movimientos
Mmáx = 1 + 2 + … + (n-1) = n * (n-1) / 2 = (n2 – n) / 2
Análisis de eficiencia del método de Inserción directa
![Page 44: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/44.jpg)
El número de comparaciones y movimientos promedio se da cuando los elementos aparecen aleatoriamente.
Se calcula sumando las comparaciones y movimientos máximos y mínimos entre 2. Número de comparaciones
Análisis de eficiencia del método de Inserción directa
Número de movimientos.
4
)2(
2
2
)()1(
2
2
nn
nnn
Cmed
4
)(
2
2
)(0
2
2
nn
nn
M med
![Page 45: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/45.jpg)
Análisis de eficiencia del método de Inserción directa
Por ejemplo si son 100 elementos a ordenar tenemos Caso mejor (Ordenado)
99 comparaciones 0 movimientos
Caso medio (aleatorio) 2,524 comparaciones 2,475 movimientos
Caso peor (en orden inverso) 4,950 comparaciones 4,950 movimientos
![Page 46: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/46.jpg)
Es más eficiente que los anteriores, sin embargo no se recomienda utilizarlo si el número de elementos del arreglo es mediano o grande.
La idea básica es buscar el menor elemento y colocarlo en la primera posición.
Luego se busca el segundo más pequeño y se coloca en la segunda posición.
Y así sucesivamente hasta que todos los elementos hayan sido ordenados.
Método por Selección directa
![Page 47: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/47.jpg)
Método por selección directa
15 67 8 16 44 27 12 35
Por ejemplo ordenar ascendentemente utilizando el método de selección directa
![Page 48: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/48.jpg)
Primera pasada Se haya el menor que es A[2] = 8 Se intercambia con el primero A[0] Luego el arreglo queda de la siguiente manera:
Método por selección directa
8 67 15 16 44 27 12 35
![Page 49: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/49.jpg)
Segunda pasada Se haya el segundo menor que es A[6] = 12 Se intercambia con el segundo A[1] Luego el arreglo queda de la siguiente manera:
Método por selección directa
8 12 15 16 44 27 67 35
![Page 50: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/50.jpg)
Tercera pasada Se haya el tercer menor que es A[2] = 15 Se intercambia con el tercero A[2] Luego el arreglo queda de la siguiente manera:
Método por selección directa
8 12 15 16 44 27 67 35
![Page 51: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/51.jpg)
Cuarta pasada Se haya el cuarto menor que es A[3] = 16 Se intercambia con el cuarto A[3] Luego el arreglo queda de la siguiente manera:
Método por selección directa
8 12 15 16 44 27 67 35
![Page 52: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/52.jpg)
Quinta pasada Se haya el quinto menor que es A[5] = 27 Se intercambia con el quinto A[4] Luego el arreglo queda de la siguiente manera:
Método por selección directa
8 12 15 16 27 44 67 35
![Page 53: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/53.jpg)
Sexta pasada Se haya el sexto menor que es A[7] = 35 Se intercambia con el sexto A[5] Luego el arreglo queda de la siguiente manera:
Método por selección directa
8 12 15 16 27 35 67 44
![Page 54: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/54.jpg)
Sétima pasada Se haya el sétimo menor que es A[7] = 44 Se intercambia con el sétimo A[6] Luego el arreglo queda de la siguiente manera,
completamente ordenado:
Método por selección directa
8 12 15 16 27 35 44 55
![Page 55: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/55.jpg)
Método Selección (A,N)
Para i desde 0 hasta N-2 hacer
menor A[ i ], k i
Para j desde i+1 hasta N-1 hacer
Si A[ j ] < menor entonces
menor A[ j ], k j
Fin Si
Fin Para
A[ k ] A[ i ]
A[ i ] menor
Fin Para
Fin Método
Método por selección directa
![Page 56: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/56.jpg)
Análisis de eficiencia del Método por selección directa
El número de comparaciones es independiente de la disposición inicial de los elementos en el arreglo.
En la primera pasada se realizan (n-1) comparaciones En la segunda (n-2) comparaciones Y así sucesivamente hasta 2 y 1 comparaciones en la
penúltima y última pasadas. Por consiguiente el número de comparaciones C es:
2
2
)1(*12)2()1(
2 nnC
nnnnC
![Page 57: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/57.jpg)
Análisis de eficiencia del Método por selección directa
El número de movimientos o intercambios siempre será:
1nM
Por ejemplo si son 100 elementos a ordenar tenemos para los casos mejor, peor y medio:
4950 comparaciones 99 movimientos
![Page 58: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/58.jpg)
Método Shell
El método de Shell es una versión mejorada del método de inserción directa.
Lo propuso Donald L. Shell en 1959. También se le conoce como ordenamiento por
disminución del incremento o inserción con incrementos decrecientes.
Propone que las comparaciones entre elementos se efectúen con saltos de mayor tamaño pero con incrementos decrecientes para que los elementos queden ordenados más rápidamente.
![Page 59: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/59.jpg)
Método Shell
Imaginemos un arreglo de 16 elementos. Se dividen los elementos en ocho grupos teniendo en
cuenta los elementos a ocho posiciones de distancia entre sí y se ordenan por separado.
Luego se dividen en cuatro grupos, teniendo en cuenta los elementos que se encuentren a cuatro posiciones entre sí, y se les ordena por separado.
Se dividen en grupos tomando en cuenta los que se encuentran a dos posiciones entre sí y nuevamente se les ordena por separado.
Finalmente se agrupan y ordenan de manera normal, de uno en uno.
![Page 60: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/60.jpg)
Método Shell - Ejemplo
Se desea ordenar:
15, 67, 08, 16, 44, 27, 12, 35, 56, 21, 13, 28, 60, 36, 07, 10
1515 6767 0808 1616 4444 2727 1212 3535 5656 2121 1313 2828 6060 3636 0707 10101ra. Pasada:1ra. Pasada:
1515 67670808 1616 4444 2727 1212 353556562121 1313 2828 6060 36360707 1010
1515 67670808 1616 4444 2727 1212353556562121 1313 2828606036360707 10102ra. Pasada:2ra. Pasada:
1515 67670808 16164444 2727 1212 353556562121 13132828 606036360707 1010
![Page 61: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/61.jpg)
Clasificación por Shell
1515 67670808 16164444 2727 1212 353556562121 13132828606036360707 10103ra. Pasada:3ra. Pasada:
1515 67670808 1616 444427271212 3535 56562121 1313 2828 6060363607071010
4ta. Pasada:4ta. Pasada: 1515 67670808 1616 444427271212 353556562121 1313 2828 6060363607071010
1515 67670808 1616 444427271212 3535 565621211313 2828 606036360707 1010
![Page 62: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/62.jpg)
Método Shell (A, N) int N + 1 Mientras (int > 1) hacer
int entero(int / 2), band verdadero Mientras (band = verdadero) hacer
band falso, i 0 Mientras ( i + int ) <= N - 1 ) hacer Si A[ i ] > A [ i + int] entonces
aux A[i], A[ i ] A[ i+1], A[ i+1] auxband verdadero
Fin Si i i + 1 Fin Mientras
Fin Mientras Fin MientrasFin Método
Método Shell
![Page 63: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/63.jpg)
Análisis de la eficiencia del Método Shell
Se han llevado acabo varios estudios de la Clasificación por Shell, pero ninguno ha demostrado que una opción de los incrementos sea muy superior al resto.
En 1969 Pratt descubrió que el tiempo de ejecución del algoritmo es del orden n*(log n)2.
Se han efectuado estudios empíricos sumamente amplios y al parecer, cuando n es grande, el número de movimientos fluctúa entre n5/4 y 1.6n5/4.
![Page 64: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/64.jpg)
Método QuickSort (Ordenación rápida)
Este método es el más eficiente y veloz de los métodos de ordenación interna.
Conocido como método de ordenación rápida y de ordenación por partición.
Este método es una mejora sustancial del método de intercambio directo.
La idea del algoritmo es la siguiente: Se toma un elemento X de una posición cualquiera del
arreglo. Se trata de ubicar X en la posición correcta del arreglo,
de tal forma que todos los elementos que se encuentren a su izquierda sean menores o iguales a X y todos los que se encuentren a su derecha sean mayores o iguales a X.
![Page 65: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/65.jpg)
Método QuickSort (Ordenación rápida)
Se repiten los pasos pero ahora con los conjuntos de datos que se encuentran a la izquierda y a la derecha de la posición correcta de X en el arreglo.
El proceso termina cuando todos los elementos se encuentran en su posición correcta en el arreglo.
![Page 66: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/66.jpg)
Método QuickSort (Ordenación rápida)
Entonces procederemos de la siguiente manera: Se Selecciona un elemento X cualquiera, en nuestro
caso A[0] Se recorre el arreglo de derecha a izquierda,
comparando si los elementos son mayores o iguales a X Si un elemento no cumple con esta condición, se
intercambia con X y se almacena en una variable su posición (acotamos el arreglo por la derecha)
Se inicia nuevamente el recorrido pero ahora de izquierda a derecha, comparando si los elementos son menores o iguales a X.
Si no cumple la condición se intercambia con X y se almacena su posición (acotamos por la izquierda).
Se repiten los pasos anteriores hasta que X encuentra su posición correcta en el arreglo.
![Page 67: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/67.jpg)
Método Quicksort
Por ejemplo ordenaremos ascendentemente:15, 67, 08, 16, 44, 27, 12, 35
Elegimos X = A[0] = 15 Primera pasada
Recorremos de derecha a izquierda A[7] >= X (35 >= 15) no hay intercambio A[6] >= X (12 >= 15) sí hay intercambio Queda como sigue:
12, 67, 08, 16, 44, 27, 15, 35 Ahora recorremos de izquierda a derecha
A[1] <= X (67<=15) sí hay intercambio Queda como sigue:
12, 15 , 08, 16, 44, 27, 67, 35
![Page 68: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/68.jpg)
Método Quicksort
Segunda pasada Recorremos de derecha a izquierda
A[5] >= X (27>=15) no hay intercambio A[4] >= X (44 >=15) no hay intercambio A[3] >= X (16 >=15) no hay intercambio A[2] >= X (08 >=15) si hay intercambio Queda como sigue:
12, 08, 15, 16, 44, 27, 67, 35 Como el recorrido de izquierda a derecha se debería
iniciar en la misma posición donde se encuentra X, el proceso termina pues X está en la posición correcta.
12 08 15 16 44 27 35
1er conjunto 2do conjunto
![Page 69: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/69.jpg)
Método Quicksort
Este proceso de particionamiento para localizar la posición correcta de un elemento X, se repite cada vez que queden conjuntos formados por dos o más elementos.
El método se puede aplicar de manera iterativa o recursiva
En la siguiente diapositiva se muestra el ordenamiento completo.
![Page 70: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/70.jpg)
Método Quicksort
12 08 16 44 27 67 351ra. Pasada 15
0812 44 27 67 352da. Pasada 15 16
15 35 27 4408123ra. Pasada 16 67
15 16 35 4408 27124ra. Pasada 67
15 2716 4412 35085ta. Pasada 67
![Page 71: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/71.jpg)
Método Quicksort (A,N)
ReduceQuicksort (0, N-1)
Fin Método
Método QuickSort – Algoritmo recursivo
![Page 72: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/72.jpg)
Método ReduceQuicksort (INI, FIN)
izq INI, der FIN, pos INI, flag verdadero
Mientras (flag = verdadero) hacer
flag falso
Mientras (A[pos] <= A[der] ) y (pos <> der ) hacer
der der -1
Fin Mientras
Si (pos <> der ) entonces
aux A [pos], A[pos] A[der], A[der] aux, pos der
Mientras (A[pos] >= A[izq] ) y (pos <> izq ) hacer
izq izq +1
Fin Mientras
Método QuickSort – Algoritmo recursivo
![Page 73: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/73.jpg)
Si (pos <> izq ) entonces
aux A [pos], A[pos] A[izq], A[izq] aux
pos izq, flag verdadero
Fin Si
Fin Si
Fin Mientras
Si (pos - 1 > INI) entonces
ReduceQuicksort (INI, pos - 1)
Fin Si
Si (FIN > pos + 1) entonces
ReduceQuicksort (pos + 1, FIN)
Fin Si
Fin Método
Método QuickSort – Algoritmo recursivo
![Page 74: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/74.jpg)
Análisis de la eficiencia del método QuickSort
Si se escoge en cada pasada el elemento que ocupa la posición central, el número de pasadas es del orden de:
log n Si el tamaño del arreglo es una potencia de 2, el número
de comparaciones será:
C = (n-1) * log n El peor caso ocurre cuando los elementos ya están
ordenados o se encuentran en orden inverso.
Cmáx = n*(n+1)/2 -1
Cmáx = (n2 + n)/2 -1
![Page 75: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/75.jpg)
Análisis de la eficiencia del método QuickSort
En conclusión Tiempo promedio de ejecución
n * log n, O(n * log n) Tiempo de ejecución en el peor caso
n2, O( n2 )
![Page 76: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/76.jpg)
También conocido como HeapSort Un montículo se define como:
Para todo nodo del árbol se debe cumplir que su valor sea mayor o igual que el valor de cualquiera de sus hijos
La idea central de este método se basa en dos operaciones: Construir un montículo Eliminar la raíz del montículo en forma repetida
Ordenación por montículo
![Page 77: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/77.jpg)
Para representar un montículo en un arreglo se debe tener en cuenta para todo nodo K lo siguiente: El nodo K se almacena en la posición K correspondiente
del arreglo El hijo izquierdo del nodo K se almacena en la posición
2 * K El hijo derecho del nodo K se almacena en la posición
2 * K +1 En la siguiente diapositiva se representa un montículo
en un arreglo unidimensional
Ordenación por montículo
![Page 78: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/78.jpg)
Ordenación por montículo
67
36
28 21
27 16 15 08
60
56 44
35
67 36 60 28 21 56 44 27 16 15 08 351 2 3 4 5 6 7 8 9 10 11 12
![Page 79: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/79.jpg)
Inserción de un elemento en un Montículo
La inserción en un montículo se lleva a cabo de la siguiente manera: Se inserta en la primera posición disponible. Se verifica si el valor es mayor que el de su padre.
Si se cumple se efectúa el intercambio. Si no se cumple entonces el algoritmo se detiene y el elemento
queda ubicado en su posición correcta. Es un algoritmo recursivo y desde abajo hacia arriba.
Por ejemplo insertaremos los siguientes elementos en un montículo que esta vacío:
15, 60, 08, 16, 44, 27, 12, 35
![Page 80: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/80.jpg)
Inserción por Montículo
Inserción: 15 15 15
60
15
15
60
15 6060 15
15
60
08
16
16
60
08
15
60 15 08 16
60 16 08 15Inserción: 08 y 16
Inserción: 60
15 60 08 16 44 27 12 35
1 2 3 4 5 6 7 8
![Page 81: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/81.jpg)
Inserción por Montículo
Inserción: 44
16
60
08
15 44
44
60
08
15 16
60 16 08 15 44 60 44 08 15 16
44
60
08
15 16 27
44
60
27
15 16 08
60 44 08 15 16 27 60 44 27 15 16 08
Inserción: 27
![Page 82: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/82.jpg)
Inserción por Montículo
Inserción de 12 y 35
44
60
27
15 16 08 12
35
44
60
27
35 16 08 12
15
60 44 27 15 16 08 12 35
60 44 27 35 16 08 12 15
![Page 83: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/83.jpg)
Eliminación de un Montículo
Se elimina la raíz del montículo en forma repetida. Se reemplaza la raíz con el elemento que ocupa la última
posición del montículo. Verifica que la nueva raíz sea menor que el valor más
grande de sus hijos. Si se cumple la condición, entonces se efectúa el
intercambio. Si no se cumple el algoritmo se detiene
Se aplica este algoritmo de manera recursiva y de arriba hacia abajo.
Ejemplo: Se desea eliminar la raíz del montículo presentado en el arreglo, en forma repetida:
60 44 27 35 16 08 12 15
![Page 84: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/84.jpg)
Eliminación de un Montículo
Eliminación de la raíz: 60 Intercambiamos la raíz 60 con el elemento que ocupa la última
posición del montículo que es 15.
15 44 27 35 16 08 12 60
44 15 27 35 16 08 12 60
44 35 27 15 16 08 12 60
La nueva raíz es: 15 y comparamos: i. Vector[1] < Vector[2] (15 < 44) si hay intercambio ii. Vector[1] < Vector[3] (15 < 27)
El nuevo valor de la posición 2 es 15 y comparamos: i. Vector[2] < Vector[4] (15 < 35) sí hay intercambio ii. Vector[2] < Vector[5] (15 < 16)
![Page 85: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/85.jpg)
Eliminación de un Montículo
Eliminación de la raíz: 44 Intercambiamos la raíz 44 con el elemento que ocupa la última
posición del montículo que es 12
12 35 27 15 16 08 44 60
35 12 27 15 16 08 44 60
35 16 27 15 12 08 44 60
La nueva raíz es 12 y comparamos: i. Vector[1] < Vector[2] (12 < 35) si hay intercambioii. Vector[1] < Vector[3] (12 < 27)
El nuevo valor de la posición 2 es 12 y comparamos: i. Vector[2] < Vector[4] (12 < 15)ii. Vector[2] < Vector[5] (12 < 16) si hay intercambio
![Page 86: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/86.jpg)
Eliminación de un Montículo
Eliminación de la raíz 35 Intercambiamos la raíz 35 con el elemento que ocupa la última
posición del montículo que es 08.
08 16 27 15 12 35 44 60
27 16 08 15 12 35 44 60
La nueva raíz es: 08 y comparamos: i. Vector[1] < Vector[2] (08 < 16)ii. Vector[1] < Vector[3] (08 < 27) si hay intercambio
![Page 87: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/87.jpg)
Eliminación de un Montículo
Eliminación de la raíz 27 Intercambiamos la raíz 27 con el elemento que ocupa la última
posición del montículo que es 12.
12 16 08 15 27 35 44 60
16 12 08 15 27 35 44 60
16 15 08 12 27 35 44 60
La nueva raíz es 12 y comparamos:i. Vector[1] < Vector[2] (12 < 16) si hay intercambioii. Vector[1] < Vector[3] (12 < 08)
El nuevo valor de la posición 2 es: 12 y comparamos:i. Vector[2] < Vector[4] (12 < 15) si hay intercambio
![Page 88: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/88.jpg)
Eliminación de un Montículo
Eliminación de la raíz: 16 Intercambiamos la raíz 16 con el elemento que ocupa la última
posición del montículo que es 12.
12 15 08 16 27 35 44 60
15 12 08 16 27 35 44 60
La nueva raíz es: 12 y comparamos:i. Vector[1] < Vector[2] (12 < 15) si hay intercambioii. Vector[1] < Vector[3] (12 < 08)
![Page 89: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/89.jpg)
Eliminación de un Montículo
Eliminación de la raíz: 15 Intercambiamos la raíz 15 con el elemento que ocupa la última
posición del montículo que es 08.
08 12 15 16 27 35 44 60
12 08 15 16 27 35 44 60
La nueva raíz es: 08 y comparamos: i. Vector[1] < Vector[2] (08 < 12) si hay intercambio
![Page 90: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/90.jpg)
Eliminación de un Montículo
Eliminación de la raíz 12 Intercambiamos la raíz 12 con el elemento que ocupa la
última posición del montículo que es 08.
08 12 15 16 27 35 44 60
El nuevo valor de la posición 1 es: 08 y no podemos comparar con más pues el primer hijo del montículo no existe. Pero observamos que el séptimo mayor valor
![Page 91: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/91.jpg)
Análisis de eficiencia del método del Montículo
El análisis del método del montículo es complejo. Debemos tener en cuenta tanto la fase de construcción del
montículo como la fase de eliminación de su raíz. Este es un método muy rápido para sobre todo para
valores grandes de n. El tiempo de ejecución del algoritmo en ambas fases es
O(n * log n)
![Page 92: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/92.jpg)
Métodos de Búsqueda
![Page 93: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/93.jpg)
Introducción
La búsqueda es una operación que nos permite recuperar información previamente almacenada. El resultado de la operación es el éxito en el caso de
encontrar el elemento buscado y de fracaso en caso contrario.
Ejemplos: Directorios de archivos ordenados. Ofertas laborales ordenados por tipo de trabajo. Libros de la biblioteca ordenados por autor y tema.
Se puede realizar sobre elementos ordenados ó sobre elementos desordenados.
![Page 94: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/94.jpg)
Clasificación de los métodos de búsqueda
Se pueden clasificar en:
Búsqueda Interna: Cuando los elementos se encuentran en memoria principal.
Búsqueda externa: Cuando todos los elementos se encuentran en memoria secundaria
![Page 95: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/95.jpg)
Métodos de Búsqueda Interna
Estos pueden ser almacenados en estructuras estáticas como arreglos y estructuras dinámicas como listas enlazadas y árboles. Búsqueda Secuencial ó lineal Búsqueda Secuencial con Bloques Búsqueda con Índices. Búsqueda Binaria. Búsqueda por transformación de clave (hash). Árboles Binarios de Búsqueda.
![Page 96: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/96.jpg)
Búsqueda Secuencial
Consiste en revisar elemento tras elemento de la estructura de datos. Hasta encontrar el dato más buscado o Hasta llegar al final de la lista de datos disponibles.
Se puede realizar una búsqueda secuencial en: Un arreglo desordenado. Un arreglo ordenado Una Lista enlazada desordenada Una Lista enlazada ordenada
![Page 97: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/97.jpg)
Análisis de la eficiencia de la Búsqueda Secuencial
El número de comparaciones es uno de los factores que se utilizan para determinar los la complejidad de los métodos de búsqueda
En cada método debemos evaluar situaciones donde se presenten el Caso peor Caso medio Caso mejor
![Page 98: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/98.jpg)
Análisis de la Búsqueda Secuencial en Arreglo Desordenado
La operación elemental seleccionada es la comparación.
Caso Mejor: El elemento buscado está en la primera posición.
Cmín = 1
Caso Peor: El elemento buscado no se encuentra en el arreglo o está al final.
Cmáx= n Caso Medio: El elemento buscado se encuentra en
una posición i en el arreglo.
Cmedio= (n + 1) / 2
![Page 99: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/99.jpg)
Análisis de la Búsqueda Secuencial en Arreglo Desordenado (Caso Medio)
Misma probabilidad de la distribución de los datos. Misma probabilidad de encontrar al elemento buscado en
cualquier posición del arreglo. El número de comparaciones puede ser 1, 2, 3, ..., n y en
cada paso debe darse una probabilidad de 1/n
2
11
2
1
1...321
1...
13
12
11
n
n
nnC
nnC
nn
nnnC
medio
medio
medio
![Page 100: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/100.jpg)
Análisis de la Búsqueda Secuencial en Listas Enlazadas
El número de comparaciones en la búsqueda secuencial en listas simplemente enlazadas es el mismo que para arreglos.
![Page 101: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/101.jpg)
Búsqueda Secuencial usando Bloques
El vector debe estar ordenado para este método. Trabajar con bloque de elementos en vez de
elementos aislados. El tamaño del bloque de elementos depende del
número de elementos del vector. Se realiza comparando la clave con el último
elemento de cada bloque. Si la clave resulta menor, se busca secuencialmente
en los elementos salteados del bloque de elementos.
![Page 102: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/102.jpg)
Análisis de la Búsqueda Secuencial usando Bloques
La operación elemental seleccionada es la comparación. Caso Mejor: El elemento buscado se encuentre en el
último elemento del primer bloque.
Caso Mejor = 1 Caso Peor: El elemento buscado se encuentre en la
penúltima posición del último bloque y donde todos los bloque sean del mismo tamaño. En el caso de que el último bloque no sea del mismo
tamaño que el resto, estaría dado por el penúltimo elemento del penúltimo bloque.
Caso Peor = N/(N)1/2 +((N)1/2 -1) = 2N/(N)1/2 – 1
![Page 103: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/103.jpg)
Análisis de la Búsqueda Secuencial usando Bloques
Caso Medio: El elemento buscado se encuentra en una posición i en el arreglo.
Caso Medio = [ 2N/(N)1/2 – 1 + 1 ]/2 = 2N/(N)1/2
![Page 104: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/104.jpg)
Búsqueda Binaria
Se efectúa sobre arreglos más no sobre listas. Los datos previamente deben estar ordenados. Consiste en comparar el valor buscado con el
elemento medio y discriminar si se encuentra en medio, la mitad superior ó la mitad inferior.
Para luego proseguir con esta misma táctica en el bloque definido anteriormente.
![Page 105: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/105.jpg)
Análisis de la Búsqueda Binaria
La operación elemental seleccionada es la comparación.
Caso Mejor: El elemento buscado está en la posición del medio de la lista.
Cmín = 1
Caso Peor: El elemento buscado no se encuentra en el arreglo. El problema consiste en que no se sabe a priori cuantas
comparaciones van a realizarse. Habrá tantas comparaciones como elementos medios
haya.
Cmáx = log2(N)
![Page 106: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/106.jpg)
Análisis de la Búsqueda Binaria
Caso medio: El elemento buscado se encuentra en una posición aleatoria.
2
)(log1 2 NCmedio
![Page 107: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/107.jpg)
Árboles Binario de Búsqueda
Árbol de búsqueda es si el valor contenido en cada nodo Es menor que los valores del subárbol derecho Es mayor o igual que los valores del subárbol
izquierdo. Esta estructura permite buscar valores en forma más
eficiente.
3
52
1 4 6
![Page 108: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/108.jpg)
Búsqueda de Árboles Binarios de Búsqueda
El proceso consiste en buscar el VALOR.
1. Si VALOR < N hijo izquierdo de N
2. Si VALOR > N hijo derecho de N
3. Repetir el paso (1) y (2) hasta que las siguientes condiciones:
Si VALOR = N puntero al nodo encontrado.
Si hay un subárbol vació La búsqueda ha sido infructuosa
38
14 56
8 23 82
1970
45
![Page 109: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/109.jpg)
Inserción de Árboles Binarios de Búsqueda
El proceso consiste en insertar el VALOR. Si VALOR < N el hijo izquierdo de
N. Si VALOR > N el hijo derecho de
N. Si VALOR = N y existe hijo izquierdo el hijo izquierdo de N.
Repetir el paso (1) , (2) y (3) hasta que las siguientes condiciones: Si hay un subárbol vació Se
inserta en el subárbol vacío.
38
14 56
8 23 82
1970
45
![Page 110: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/110.jpg)
Eliminación de Árboles Binarios de Búsqueda
El proceso consiste es eliminar el VALOR.
Caso 1: N no tiene hijos N se elimina y se remplaza el puntero del padre a N por el puntero nulo.
Caso2: N tiene un hijo N se elimina y es reemplazando el puntero a N del Padre por puntero al hijo único de N
Caso 3: N tiene dos hijos, N se elimina y es remplazado por el nodo que está más a la derecha en el subárbol izquierdo.
38
14 56
8 23 82
1970
45
![Page 111: Cap 05 - Métodos de Ordenamiento y de Búsqueda](https://reader034.fdocuments.net/reader034/viewer/2022052411/5571f94b49795991698f3eb4/html5/thumbnails/111.jpg)
Análisis de operaciones en Árboles Binarios de Búsqueda
Muchos nodos pueden tener un solo hijo y así sus ramas se vuelven largas y delgadas, con esto se vuelve ineficiente. El peor caso todos los nodos pueden tener un solo hijo.
Buscar un valor en el significa comparar prácticamente con los n nodos del árbol.
Existen métodos para equilibrar el árbol y que las operaciones de búsqueda, adición, ó borrado requieran un tiempo que este en O(Log n) en el caso peor