Movimientos Precursores de La Independencia en Venezuela
Estructura de Datos : Ordenamiento Externo
1. Estudiantes:
Criollo Cumbe Carlos Ismael
Barreto Paredes Christian Fabian
Valladarez Carlos
ORDENAMIENTO
EXTERNO DE ARCHIVOS
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
2. ÍNDICE
* Introducción
* Materiales y Métodos
* Intercalación Directa
* Intercalación Natural
* Intercalación Balanceada
* Intercalación Polifásica
* Conclusiones
* Bibliografía
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
3. Introducción
● Los Algoritmos de ordenamiento externo está ligado con los archivos y los
dispositivos en que se encuentran.
● Terminología Empleada:
* Separación (partición): distribución de secuencias de registros ordenados
(en varios archivos).
* Fusión: mezcla entre dos o más secuencias ordenadas (en una única
secuencia ordenada).
* Tramos: conjunto de registros que forman una unidad.
* k-vías: “número de flujos en archivos en modo lectura”.
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
4. Materiales y Métodos
● NetBeans
● Librería Externa CSV para Java
Enlaces al código fuente en Java, tras la lógica de estos algoritmos:
Intercalación Natural y directa: https://github.com/chey3002/Ordenamientos-
externos-Directo-y-Natural
Intercalación Balanceada: https://github.com/cricucmar/OrdenamientoBalanceado
Intercalación Polifase: https://github.com/cricucmar/Ordenamiento
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
5. INTERCALACIÓN DIRECTA
El método de ordenación por mezcla directa es
probablemente el más utilizado por su fácil comprensión. La
idea central de este algoritmo consiste en la realización
sucesiva de una partición y una fusión que produce
secuencias ordenadas de longitud cada vez mayor.
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
6. En la primera pasada, la partición es de longitud 1 y la fusión o mezcla produce
secuencias ordenadas de longitud 2. En la segunda pasada, la partición es de
longitud 2 y la fusión o mezcla produce secuencias ordenadas de longitud 4. Este
proceso se repite hasta que la longitud de la secuencia para la partición sea:
Parte entera ((n +l)/2).
Donde n representa el número de elementos del archivo original.
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
11. INTERCALACIÓN NATURAL
El método de ordenación por intercalación natural, es una optimización del
método de mezcla directa.
La idea central de este algoritmo consiste en realizar las particiones tomando
secuencias ordenadas de máxima longitud en lugar de secuencias de tamaño fijo
previamente determinadas. Luego se realiza la fusión de las secuencias
ordenadas, en alternada, sobre dos archivos.
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
12. Aplicando estas acciones en forma repetida se logrará el archivo original quede
ordenado. El proceso termina cuando en la realización de una fusión-partición el
segundo archivo quede vacío.
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
16. 3 4 7 11 12 14 20 22 32 40
3 4 7 11 12 14 20 22 32 40
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
17. INTERCALACIÓN BALANCEADA
Una intercalación balanceada de M-vías usa M archivos de entrada y M archivos
de salida en cualquier instante dado, M-1 de los archivos de salida están
desocupados.
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
18. Características (Balanceada)
Evita el exceso de copiado de registros
Distribuye los resultados del paso de intercalación directamente en el número
apropiado de archivos para la entrada al siguiente paso de intercalación.
Una intercalación balanceada de M-vías ocupa 2M archivos
Los datos son removidos una y otra vez entre un número igual de archivos de
entrada y salida.
Los requerimientos de E/S de una intercalación natural pueden reducirse
usando una intercalación balanceada.
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
19. Pasos (Balanceada)
1)Distribuir registros del archivo original por tramos en los m/2 primeros
archivos auxiliares, estos archivos se los tomara como archivos de entrada.
2)Se mezcla los tramos de los archivos de entrada y se los escribe
consecutivamente en los m/2 archivos auxiliares siguientes, estos archivos
se los toma como archivos de salida.
3) Los archivos cambian su finalidad, los archivos de entrada pasan a ser los
archivos de salida y viceversa.
4)El segundo paso se repite hasta que quede un solo tramo, entonces diremos
que los registros del archivo están ordenados.
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
20. EJEMPLO (Balanceada)
Tenemos un archivo inicial
23 43 11 2 5 318172019
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
21. Tenemos 6 archivos auxiliares: 3 de entrada y 3 de salida
23 43 11 2 5 318172019
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
22. Distribuir registros del archivo original por tramos en los archivos auxiliares
23 43
23 43 11 2 5 318172019
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
23. 23 43
11
23 43 11 2 5 318172019
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
24. 23 43
11
2 5 19 20
23 43 11 2 5 318172019
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
25. 23 43 17 18
11
2 5 19 20
23 43 11 2 5 318172019
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
26. 23 43 17 18
11 3
2 5 19 20
23 43 11 2 5 318172019
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
27. Obtenemos 3 listas de entrada: 2 particiones
23 43 17 18
11 3
2 5 19 20
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
28. Se compara la primera partición
23 43
11
2 5 19 20
2
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
29. 23 43
11
5 19 20
2 5
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
30. 23 43
11
19 20
2 5 11
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
31. 23 43
19 20
2 5 11 19
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
32. 23 43
20
2 5 11 19 20
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
33. 23 43
2 5 11 19 20 4323
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
34. Se compara la segunda partición
17 18
3
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
36. 17 18
3 17 18
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
37. Tenemos como resultado 2 archivos ordenados
2 5 11 19 20 4523
3 17 8
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
38. Hacemos la mezcla entre los 2 archivos ordenados
2 5 11 19 20 4523
3 17 18
2
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
39. 5 11 19 20 4523
3 17 18
2 3
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
40. 5 11 19 20 4523
17 18
2 3 5
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
41. 11 19 20 4523
17 18
2 3 5 11
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
42. 19 20 4523
17 18
2 3 5 11 17
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
43. 19 20 4523
18
2 3 5 11 17 18
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
44. Obtenemos un único tramo
Obte
19 20 4523
2 3 5 11 17 4523201918
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
45. EJEMPLO (Balanceada)
Obtenemos un archivo final ordenado
2 3 5 11 17 4523201918
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
46. INTERCALACIÓN POLIFASE
* Intercalación desbalanceada
* Emplea un número constante de cintas de entrada
* Predomina una cinta de Salida (Variable en el Proceso)
* Por lo tanto, emplea k-vías con k + 1 cintas.
* Distribución no Uniforme de los tramos (La distribución de tramos iniciales
debe depender de una sucesión dependiente del número de archivos a utilizar
(m) ).
* La ejecución de una cinta viene dada por la expresión:
S^n s={Tamaño de la ejecución} n={número de ejecuciones}
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
47. METODOLOGÍA POLIFASE
● Definir el número de cintas a usar (m) // m-1 de salida y 1 de entrada
Para m=3 T1 salida T2 salida T3 entrada
● Distribución de tramos en las archivos de salida
* Distribución Óptima ( sucesión K-Fibonacci) → ¿Y si no se puede?
ejm: para n=21 fibonacci → {21, 13, 8, 5, 3, 2, 1, 1}
m=3 Tramos inicial de T1 [13] y T2 [8]
● Realizar la Intercalación recursiva hasta que quede un único tramo
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE
SISTEMAS
48. ESTRATEGIA DE LA INTERCALACIÓN POLIFASE
* Imagine una distribución inicial en 3 registros → numTramos[7,6,4]
* Se busca el archivo con menor tramo y se intercala con los demás
(en el registro de escritura).
* Para la intercalación en cada fase se realiza ordenación interna.
* Se repite el proceso hasta tener un único archivo (Los registros ordenados).
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE
SISTEMAS
49. DISTRIBUCIÓN INICIAL (
n = 15 , m = 4)
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
52. REGISTRO ORDENADO
● Finalmente se obtiene un único tramo,
correspondiente al registro ordenado
● Entonces T1 se sobrescribe en el ArchivoBase
X X
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
53. CONCLUSIONES
● En cuanto al método directo, se recalcar que es el método más utilizado por
su sencilla implementación.
● El método de intercalación natural es una evolución del método directo,
puesto que cambian los grupos de dimensión definida, por grupos de máxima
dimensión, haciéndolo más eficiente.
● Para el método Balanceado se puede apreciar una mejora a los anteriores
puesto que este cuenta con archivos auxiliares ya definidos y reutilizables,
realiza una sola función mientras que en el método natural se define
reiteradas veces.
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
54. CONCLUSIONES
● El método Polifásico provee mejoras a los métodos balanceados al reducir el
número de archivos empleados, sin embargo, nótese que la dificultad radica
en la determinación de la distribución inicial, puesto que esta debe que ser
ideal, aun más si se presentan números de registros que no coinciden con la
sucesión de k-fibonacci en donde se implementan registros o tramos
ficticios, si se considera un archivo-base con 32 registros con 4 archivos
auxiliares (3 de salida, 1 de entrada), se notará la desventaja de esta
intercalación.
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
55. BIBLIOGRAFÍA
[1] Horowitz E, Sahni S, Fundamentals of Data Structures, capítulo 7,
Ordenamiento Externo.
[2] Joyanes A, Zahonero I, Estructura de datos en Java, Madrid, España.
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS