Professional Documents
Culture Documents
Robert Espinoza
Mtodos de ordenamiento
Introduccin
Ordenacin interna
Los elementos se encuentran en la memoria principal de
la computadora (acceso aleatorio)
Tambin conocida como ordenacin de arreglos.
Ordenacin externa
Los elementos se encuentran almacenados en
dispositivos de almacenamiento secundario (discos,
cintas, etc.)
Tambin se le conoce como ordenacin de archivos.
Ordenamiento Interno
Ordenacin Interna
En conclusin:
Cuando N es pequeo deben utilizarse mtodos
directos.
Cuando N es mediano o grande deben emplearse
mtodos logartmicos.
Ordenacin por intercambio (Burbuja)
ordenados
Ordenacin por intercambio (Burbuja)
15 67 8 16 44 27 12 35
Ordenacin por intercambio (Burbuja)
Primera pasada
8 15 67 12 16 44 27 35
Ordenacin por intercambio (Burbuja)
Segunda pasada
8 12 15 67 16 27 44 35
Ordenacin por intercambio (Burbuja)
Tercera pasada
8 12 15 16 67 27 35 44
Ordenacin por intercambio (Burbuja)
Cuarta pasada
8 12 15 16 27 67 35 44
Ordenacin por intercambio (Burbuja)
Quinta pasada
8 12 15 16 27 35 67 44
Ordenacin por intercambio (Burbuja)
Sexta pasada
8 12 15 16 27 35 44 67
Ordenacin por intercambio (Burbuja)
Stima pasada
8 12 15 16 27 35 44 67
Ordenacin por intercambio (Burbuja)
Mtodo 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 Mtodo
Ordenacin por intercambio (Burbuja)
15 67 8 16 44 27 12 35
Ordenacin por intercambio (Burbuja)
Primera pasada
15 8 16 44 27 12 35 67
Ordenacin por intercambio (Burbuja)
Segunda pasada
8 15 16 27 12 35 44 67
Ordenacin por intercambio (Burbuja)
Tercera pasada
8 15 16 12 27 35 44 67
Ordenacin por intercambio (Burbuja)
Cuarta pasada
8 15 12 16 27 35 44 67
Ordenacin por intercambio (Burbuja)
Quinta pasada
8 12 15 16 27 35 44 67
Ordenacin por intercambio (Burbuja)
Sexta pasada
8 12 15 16 27 35 44 67
Ordenacin por intercambio (Burbuja)
Stima pasada
8 12 15 16 27 35 44 67
Ordenacin por intercambio (Burbuja)
Mtodo 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 Mtodo
Anlisis de eficiencia del Mtodo por
intercambio (Burbuja)
Nmero 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 nmero de comparaciones C es:
n * (n 1)
C (n 1) (n 2) 2 1
2
n2 n
C
2
Anlisis de eficiencia del Mtodo por
intercambio (Burbuja)
El nmero de movimientos o intercambios dependen
de si el arreglo se encuentra:
En orden inverso (caso peor)
Mmx = 3 * (n2 n) / 2 = 1.5 * (n2 n)
Desordenado o aleatorio (caso medio)
Mmed = 0.75 * (n2 n)
Ordenado (caso mejor)
Mmn = 0
El tiempo necesario para ejecutar el algoritmo de la
burbuja es proporcional a n2
T(n) = O(n2)
Anlisis de eficiencia del Mtodo por
intercambio (Burbuja)
Por ejemplo si son 100 elementos a ordenar tenemos
Caso mejor (Ordenado)
4,950 comparaciones
0 movimientos
7,425 movimientos
14,850 movimientos
Mtodo de intercambio con seal (flag)
15 67 8 16 44 27 12 35
Ordenacin por Insercin directa
Primera pasada
15 67 8 16 44 27 12 35
Ordenacin por Insercin directa
Segunda pasada
8 15 67 16 44 27 12 35
Ordenacin por Insercin directa
Tercera pasada
8 15 16 67 44 27 12 35
Ordenacin por Insercin directa
Cuarta pasada
8 15 16 44 67 27 12 35
Ordenacin por Insercin directa
Quinta pasada
8 15 16 27 44 67 12 35
Ordenacin por Insercin directa
Sexta pasada
8 12 15 16 27 44 67 35
Ordenacin por Insercin directa
Stima pasada
8 12 15 16 27 35 44 67
Ordenacin por Insercin directa
( n 2 n)
(n 1) (n 2 n 2)
2
C med
2 4
Nmero de movimientos.
( n 2 n)
0 ( n 2 n)
2
M med
2 4
Anlisis de eficiencia del mtodo de
Insercin directa
Por ejemplo si son 100 elementos a ordenar
tenemos
Caso mejor (Ordenado)
99 comparaciones
0 movimientos
2,475 movimientos
4,950 movimientos
Mtodo por Seleccin directa
15 67 8 16 44 27 12 35
Mtodo por seleccin directa
Primera pasada
Se haya el menor que es A[2] = 8
8 67 15 16 44 27 12 35
Mtodo por seleccin directa
Segunda pasada
Se haya el segundo menor que es A[6] = 12
8 12 15 16 44 27 67 35
Mtodo por seleccin directa
Tercera pasada
Se haya el tercer menor que es A[2] = 15
8 12 15 16 44 27 67 35
Mtodo por seleccin directa
Cuarta pasada
Se haya el cuarto menor que es A[3] = 16
8 12 15 16 44 27 67 35
Mtodo por seleccin directa
Quinta pasada
Se haya el quinto menor que es A[5] = 27
8 12 15 16 27 44 67 35
Mtodo por seleccin directa
Sexta pasada
Se haya el sexto menor que es A[7] = 35
8 12 15 16 27 35 67 44
Mtodo por seleccin directa
Stima pasada
Se haya el stimo menor que es A[7] = 44
completamente ordenado:
8 12 15 16 27 35 44 67
Mtodo por seleccin directa
Se desea ordenar:
15, 67, 08, 16, 44, 27, 12, 35, 56, 21, 13, 28, 60, 36, 07, 10
1ra. Pasada: 15 67 08 16 44 27 12 35 56 21 13 28 60 36 07 10
15 21 08 16 44 27 07 10 56 67 13 28 60 36 12 35
2ra. Pasada: 15 21 08 16 44 27 07 10 56 67 13 28 60 36 12 35
15 21 07 10 44 27 08 16 56 36 12 28 60 67 13 35
Clasificacin por Shell
07 10 08 16 12 21 13 27 15 28 44 35 56 36 60 67
07 08 10 12 13 15 16 21 27 28 35 36 44 56 60 67
Mtodo Shell
12 08 15 16 44 27 35
1er conjunto 2do conjunto
Mtodo Quicksort
1ra. Pasada 12 08 15 16 44 27 67 35
2da. Pasada 12 08 15 16 44 27 67 35
3ra. Pasada 12 08 15 16 35 27 44 67
4ra. Pasada 12 08 15 16 27 35 44 67
5ta. Pasada 08 12 15 16 27 35 44 67
Mtodo QuickSort Algoritmo recursivo
En conclusin
Tiempo promedio de ejecucin
n * log n, O(n * log n)
Tiempo de ejecucin en el peor caso
n2, O( n2 )
Ordenacin por montculo
67
36 60
28 21 56 44
27 16 15 08 35
67 36 60 28 21 56 44 27 16 15 08 35
1 2 3 4 5 6 7 8 9 10 11 12
Insercin de un elemento en un Montculo
15 60 08 16 44 27 12 35
1 2 3 4 5 6 7 8
Insercin: 15 15 15
Insercin: 60 15 60
60 15
15 60 15
60
60
Insercin: 08 y 16 60
60 16 08 15
16 08
60 15 08 16 15 08
16 15
Insercin por Montculo
Insercin: 44 60 60
16 08 44 08
15 44 15 16
60 16 08 15 44 60 44 08 15 16
Insercin: 27
60
60
44 08
44 27
15 16 27
15 16 08
60 44 08 15 16 27 60 44 27 15 16 08
Insercin por Montculo
Insercin de 12 y 35 60
44 27
60 44 27 15 16 08 12 35
15 16 08 12
60
35
44 27
35 16 08 12
60 44 27 35 16 08 12 15
15
Eliminacin de un Montculo
Se elimina la raz del montculo en forma repetida.
Se reemplaza la raz con el elemento que ocupa la ltima
posicin del montculo.
Verifica que la nueva raz sea menor que el valor ms
grande de sus hijos.
Si se cumple la condicin, entonces se efecta 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 raz del montculo presentado
en el arreglo, en forma repetida:
60 44 27 35 16 08 12 15
Eliminacin de un Montculo
Eliminacin de la raz: 60
Intercambiamos la raz 60 con el elemento que ocupa la ltima
posicin del montculo que es 15.
15 44 27 35 16 08 12 60
La nueva raz es: 15 y comparamos:
i. Vector[1] < Mayor(Vector[2], Vector[3]) (15 < 44)
si hay intercambio
44 15 27 35 16 08 12 60
44 35 27 15 16 08 12 60
Eliminacin de un Montculo
Eliminacin de la raz: 44
Intercambiamos la raz 44 con el elemento que ocupa la ltima
posicin del montculo 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
Eliminacin de un Montculo
Eliminacin de la raz 35
Intercambiamos la raz 35 con el elemento que ocupa la ltima
posicin del montculo que es 08.
08 16 27 15 12 35 44 60
27 16 08 15 12 35 44 60
Eliminacin de un Montculo
Eliminacin de la raz 27
Intercambiamos la raz 27 con el elemento que ocupa la ltima
posicin del montculo 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
Eliminacin de un Montculo
Eliminacin de la raz: 16
Intercambiamos la raz 16 con el elemento que ocupa la ltima
posicin del montculo que es 12.
12 15 08 16 27 35 44 60
15 12 08 16 27 35 44 60
Eliminacin de un Montculo
Eliminacin de la raz: 15
Intercambiamos la raz 15 con el elemento que ocupa la ltima
posicin del montculo que es 08.
08 12 15 16 27 35 44 60
12 08 15 16 27 35 44 60
Eliminacin de un Montculo
Eliminacin de la raz 12
Intercambiamos la raz 12 con el elemento que ocupa la
ltima posicin del montculo que es 08.
08 12 15 16 27 35 44 60
Archivo resultado X
087 503 512 573 581 625 670 677 694 762
Intercalacin de archivos
20 < 11 No se cumple
Se copia el reg. correspondiente de F2 en X,
se lee otra clave de F2 (17)
El estado de los archivos F1, F2 y X hasta el momento
es:
F1: 05 08 20 24 36
F2: 11 17 23 29 55 60 84
X: 05 08 11
Finalmente X queda como sigue:
X: 05 08 11 17 20 23 24 29 36 55 60 84
Intercalacin de archivos
Mtodo Intercalar(F1, F2, X)
abrir archivo F1
abrir archivo F2
abrir archivo X
a leer archivo F1
b leer archivo F2
// procesa los dos archivos
Mientras (no EOF(F1) y no EOF(F2))
Si (a<b) entonces
almacena a en X
a leer archivo F1
Sino
almacena b en X
b leer archivo F2
Fin Si
Fin Mientras
Intercalacin de archivos
//procesa archivo F1
Mientras (no EOF(F1))
almacena a en X
a leer archivo F1
Fin Mientras
//procesa archivo F2
Mientras (no EOF(F2))
almacena b en X
b leer archivo F2
fin Mientras
Suponer:
M es el tamao del archivo F1
N es el tamao del archivo F2
Los dos archivos se procesan al mismo tiempo hasta
que uno de los dos llega a su fin M-N o N-M
Despus se procesa el resto del archivo que no ha
terminado, por lo tanto la complejidad es el mayor de M
yN
Ordenacin de archivos
Ordenacin de archivos
09 75 14 68 29 17 31 25 04 05 13 18 72 46 61
Particin 09 14 29 31 04 13 72 61
75 68 17 25 05 18 46
Fusin
09 75 14 68 17 29 25 31 04 05 13 18 46 72 61
Particin 09 75 17 29 04 05 46 72
14 68 25 31 13 18 61
Mezcla Directa
Segunda Pasada:
Particin en secuencias de longitud 2.
F1: 09 75 17 29 04 05 46 72
F2: 14 68 25 31 13 18 61
Fusin en secuencias de longitud 4.
F: 09 14 68 75 17 25 29 31 04 05 13 18 46 61 72
Tercera Pasada:
Particin en secuencias de longitud 4.
F1: 09 14 68 75 04 05 13 18
F2: 17 25 29 31 46 61 72
Fusin en secuencias de longitud 8.
F: 09 14 17 25 29 31 68 75 04 05 13 18 46 61 72
Mezcla Directa
Cuarta Pasada:
Particin en secuencias de longitud 8.
F1: 09 14 17 25 29 31 68 75
F2: 04 05 13 18 46 61 72
Fusin en secuencias de longitud 16.
F: 04 05 09 13 14 17 18 25 29 31 46 61 68 72 75
Queda finalmente ordenado el archivo.
Ordenacin por Mezcla Equilibrada o
Natural
Mezcla Equilibrada
F 09 75 14 68 29 17 31 25 04 05 13 18 72 46 61
Particin inicial
F2 09 75 29 25 46 61
F3 14 68 17 31 04 05 13 18 72
Primera fusin-particin
F 09 14 68 75 04 05 13 18 25 46 61 72
F1 17 29 31
Mezcla Equilibrada
Segunda fusin-particin
F2 09 14 17 29 31 68 75
F3 04 05 13 18 25 46 61 72
Tercera fusin-particin
F 04 05 09 13 14 17 18 25 29 31 46 61 68 72 75
F1 Archivo vaco
Mezcla Equilibrada
Primera Pasada:
Particin inicial
F2: 09 75 29 25 46 61
F3: 14 68 17 31 04 05 13 18 72
Mezcla Equilibrada
Segunda Pasada:
Fusin-Particin en secuencias ordenadas.
F: 09 14 68 75 04 05 13 18 25 46 61 72
F1: 17 29 31
Tercera Pasada:
Fusin-Particin en secuencias ordenadas
F2: 09 14 17 29 31 68 75
F3: 04 05 13 18 25 46 61 72
Cuarta Pasada:
Fusin-Particin en secuencias ordenadas
F : 04 05 09 13 14 17 18 25 29 31 46 61 68 72 75
F1:
Mezcla Equilibrada
F archivo original
F1, F2 y F3 archivos auxiliares para los procesos de particin y
fusin
Mtodo mezclaEquilibrada(F)
particionInicial (F, F2, F3) // particiona el archivo original
en F2 y F3
Hacer
// particion-fusion de F2,F3 en F y F1
particionFusion(F2, F3, F, F1)
// particion-fusion de F,F1 en F2 y F3
particionFusion(F, F1, F2, F3)
Mientras (no EOF(F1) y no EOF(F3))
Fin Mtodo
Tarea