Orden Amien to Extern o
-
Upload
verito-leddermann -
Category
Documents
-
view
216 -
download
0
Transcript of Orden Amien to Extern o
-
7/24/2019 Orden Amien to Extern o
1/11
Organizacin y Manejo de Archivos, Apuntes de Clases
4. ORDENACION EXTERNA
Los algoritmos vistos en el captulo anterior requieren que los elementos estn en
memoria principal. Sin embargo existen aplicaciones que requieren utilizar una entrada de
datos muy grande, que no puede ser almacenada directamente en memoria. Para estos casosse ha diseado algoritmos que permiten ordenar dichos datos.
Se debe explicitar que slo se colocan en memoria los datos que se pueden accesar
directamente.
4.1 Intercalacin de Archivos
La intercalacin de archivos es la unin de dos o ms archivos, los que se
encuentran ordenados por una clave, en un nico archivo.
Un algoritmo es el siguiente:
ABRIR ARCHIVOS F1 Y F2 PARA LECTURA
ABRIR ARCHIVOS F3 PARA ESCRITURA
LEER R1 Y R2 DE F1 Y F2 (RESPECTIVAMENTE)
MIENTRAS (NOT EOF F1) Y (NOT EOF F2) HACER
SI R1 < R2 ENTONCES
ESCRIBIR R1 EN F3
LEER R1 DE F1
SINO
ESCRIBIR R2 EN F3
LEER R2 DE F2
FIN SI
FIN MIENTRAS
MIENTRAS (NOT EOF F1) O (NOT EOF F2) HACER
SI EOF F1 ENTONCES
SI R1 < R2 ENTONCES
ESCRIBIR R1 EN F3
ESCRIBIR R2 EN F3
MIENTRAS NOT EOF F2 HACER
LEER R2 DE F2
ESCRIBIR R2 EN F3FIN MIENTRAS
BAND := VERDADERO
SINO
ESCRIBIR R2 EN F3
LEER R2 DE F2
FIN SI
SINO
-
7/24/2019 Orden Amien to Extern o
2/11
Organizacin y Manejo de Archivos, Apuntes de Clases
SI R1 < R2 ENTONCES
ESCRIBIR R1 EN F3
LEER R1 DE F1
SINO
ESCRIBIR R2 EN F3
ESCRIBIR R1 DE F3MIENTRAS NOT EOF F1 HACER
LEER R1 DE F1
ESCRIBIR R1 EN F3
FIN MIENTRAS
BAND := VERDADERO
FIN SI
FIN SI
FIN MIENTRAS
SI BAND = FALSO ENTONCES
SI R 1< R2 ENTONCES
ESCRIBIR R1 EN F3ESCRIBIR R2 EN F3
SINO
ESCRIBIR R2 EN F3
ESCRIBIR R1 EN F3
FIN SI
FIN SI
Ejemplo:
F1: 6 9 18 20 35
F2: 10 16 25 28 66 82 87
6 < 10 Escribir 6 en F3 y leer 9 de F1
9 < 10 Escribir 9 en F3 y leer 18 de F1
18 < 10 Escribir 10 en F3 y leer 16 de F2
18 < 16 Escribir 16 en F3 y leer 25 de F2
18 < 25 Escribir 18 en F3 y leer 20 de F1
En ese momento F1, F2 y F3 estn:
F1: 6 9 18 20 35
F2: 10 16 25 28 66 82 87
F3: 6 9 10 16 18
El proceso continua hasta que uno de los dos archivos llega hasta el fin de archivo.
-
7/24/2019 Orden Amien to Extern o
3/11
Organizacin y Manejo de Archivos, Apuntes de Clases
En este punto slo se debe transcribir las claves del archivo no vaco hacia el archivo de
salida F3. Luego se obtiene:
F3: 6 9 10 16 18 20 25 28 35 66 82 87
4.2 Ordenacin por Mezcla Directa
La idea de este logaritmo consiste en realizar sucesivamente particiones y fusiones
de los archivos, que producen secuencias ordenadas de longitud cada vez mayor. En la
primera pasada la particin es de longitud 1 y la fusin produce secuencias ordenadas de
longitud 2. En la segunda pasada la particin es de longitud 2 y la fusin produce
secuencias ordenadas de longitud 4. Este proceso continua hasta que la longitud de la
particin sea mayor o igual que el nmero de elementos para el archivo original.
El algoritmo es el que se muestra a continuacin. Requiere 2 algoritmo auxiliares.
PART: variable de tipo entero
PART:= 1
MIENTRAS PART
-
7/24/2019 Orden Amien to Extern o
4/11
Organizacin y Manejo de Archivos, Apuntes de Clases
FIN MIENTRAS
FIN MIENTRAS
FUSIONA (F, F1, F2, PART)
R1, R2, K, L: Variables de tipo entero
B1, B2: Variables de tipo Booleano
ABRIR F PARA ESCRITURA
ABRIR F1, F2 PARA LECTURA
B1:= VERDADERO
B2:= VERDADERO
SI NOT EOF F1 ENTONCES
LEER R1 DE F1
B1:= FALSO
FIN SI
SI NOT EOF F2 ENTONCES
LEER R2 DE F2B2:= FALSO
FIN SI
MIENTRAS (NOT EOF F1) O (B1= FALSO)) Y (NOT EOF F2) O (B2= FALSO)) HACER
K:= 0
L:= 0
MIENTRAS ((K < PART) Y (B1= FALSO)) Y ((L < PART) Y (B2= FALSO)) HACER
SI R1 < R2 ENTONCES
ESCRIBIR R1 EN F
B1:= VERDADERO
K:= K + 1
SI NOT EOF F1 ENTONCESLEER R1 DE F1
B1:= FALSO
FIN SI
SINO
ESCRIBIR R2 EN F
B2:= VERDADERO
L:= L + 1
SI NOT EOF F2 ENTONCES
LEER R2 DE F2
B2:= FALSO
FIN SI
FIN SI
FIN MIENTRAS
SI K < PART ENTONCES
MIENTRAS (K < PART) Y (B1 = FALSO) HACER
ESCRIBIR R1 EN F
B1:= VERDADERO
-
7/24/2019 Orden Amien to Extern o
5/11
Organizacin y Manejo de Archivos, Apuntes de Clases
K:= K + 1
SI NOT EOF F1 ENTONCES
LEER R1 DE F1
B1:= FALSO
FIN SI
FIN MIENTRASFIN SI
SI L < PART ENTONCES
MIENTRAS (L < PART) Y (B2 = FALSO) HACER
ESCRIBIR R2 EN F
B2:= VERDADERO
L:= L + 1
SI NO EOF F2 ENTONCES
LEER R2 DE F2
B2:= FALSO
FIN SI
FIN MIENTRASFIN SI
FIN MIENTRAS
SI B1 = FALSO ENTONCES
ESCRIBIR R1 EN F
FIN SI
SI B2 = FALSO ENTONCES
ESCRIBIR R2 EN F
FIN SI
MIENTRAS NOT EOF F1
LEER R1 DE F1
ESCRIBIR R1 EN FFIN MIENTRAS
MIENTRAS NOT EOF F2
LEER R2 DE F2
ESCRIBIR R2 EN F
FIN MIENTRAS
Ejemplo:
Se desea ordenar el siguiente archivo, representado por las siguientes claves:
F: 25 33 15 18 21 7 12 36 84 90 19 38
40 22 64 77 29 36 11
Primera pasada
Particin longitud 1
F1: 25 15 21 12 84 19 40 64 29 11
F2: 33 18 7 36 90 38 22 77 36
-
7/24/2019 Orden Amien to Extern o
6/11
Organizacin y Manejo de Archivos, Apuntes de Clases
Fusin longitud 2
F: 25 33 15 18 7 21 12 36 84 90 19 38
22 40 64 77 29 36 11
Segunda PasadaParticin longitud 2
F1: 25 33 7 21 84 90 22 40 29 36
F2: 15 18 12 36 19 38 64 77 11
Fusin longitud 4
F: 15 18 25 33 7 12 21 36 19 38 84 90
22 40 64 77 11 29 36
Tercera PasadaParticin longitud 4
F1: 15 18 25 33 19 38 84 90 11 29 36
F2: 7 12 21 36 22 40 64 77
Fusin longitud 8
F: 7 12 15 18 21 25 33 36 19 22 38 40
64 77 84 90 11 29 36
Cuarta PasadaParticin longitud 8
F1: 7 12 15 18 21 25 33 36 11 29 36
F2: 19 22 38 40 64 77 84 90
Fusin longitud 16
F: 7 12 15 18 19 21 22 25 33 36 38 40
64 77 84 90 11 29 36
Quinta Pasada
Particin longitud 16
F1: 7 12 15 18 19 21 22 25 33 38 40
64 77 84 90
F2: 11 29 36
-
7/24/2019 Orden Amien to Extern o
7/11
Organizacin y Manejo de Archivos, Apuntes de Clases
Fusin longitud 32
F: 7 11 12 15 18 19 21 22 25 29 33 36
36 38 40 64 77 84 90
4.3 Ordenacin por Mezcla Equilibrada
Este logaritmo consiste en realizar particiones tomando secuencias ordenadas de
mxima longitud, en vez de secuencias de tamao fijo. Luego se realiza la fusin de las
secuencias ordenadas sobre dos archivos.
Para realizar esta ordenacin se necesitan cuatro archivos: el original y tres de pago.
De estos cuatro, dos sern considerados de entrada y dos de salida, de manera
alternada, para realizar la fusin - particin. El proceso termina cuando en la realizacin de
una fusin - particin el segundo archivo queda vaco.
El algoritmo es el que se muestra a continuacin.
MEZCLA EQUILIBRADA (F, F1, F2, F3)
BAND: VARIABLE DE TIPO BOOLEANO
PARTICION INICIAL (F, F2, F3)
BAND:= VERDADERO
REPETIR
SI BAND= VERDADERO ENTONCES
PARTICION FUSION (F2, F3, F, F1)
BAND:= FALSO
SINOPARTICION FUSION (F, F1, F2, F3)
BAND:= VERDADERO
FIN SI
HASTA (F1= VACIO) O (F3= VACIO)
PARTICION INICIAL (F, F2, F3)
AUX, R: VARIABLE DE TIPO ENTERO
BAND: VARIABLE DE TIPO BOOLEANO
ABRIR F PARA LECTURAABRIR F2, F3 PARA ESCRITURA
LEER R DE F
ESCRIBIR R EN F2
BAND:= VERDADERO
AUX:= R
-
7/24/2019 Orden Amien to Extern o
8/11
Organizacin y Manejo de Archivos, Apuntes de Clases
MIENTRAS NOT EOF F
LEER R DE F
SI R >=AUX ENTONCES
AUX:= R
SI BAND=VERDADERO ENTONCESESCRIBIR R EN F2
SINO
ESCRIBIR R EN F3
FIN SI
SINO
AUX:=R
SI BAND=VERDADERO ENTONCES
ESCRIBIR R EN F3
BAND:=FALSO
SINO
ESCRIBIR R EN F2BAND:=VERDADERO
FIN SI
FIN SI
FIN MIENTRAS
PARTICION FUSION (FA, FB, FC, FD)
R1, R2, AUX:VARIABLES DE TIPO ENTERO
B, DELE1, DELE2: VARIABLES DE TIPO BOOLEANO
ABRIR FA, FB PARA LECTURA
ABRIR FC, FD PARA ESCRITURA
B:=VERDADERO
LEER R1 DE FA Y R2 DE FB
SI R1 < R2 ENTONCES
AUX:=R1
SINO
AUX:=R2
FIN SI
DELE1:= FALSO
DELE2:= FALSO
MIENTRAS ((NOT EOF FA) O (DELE1 VERDADERO)) Y
((NOT EOF FB) O (DELE2 VERDADERO)) HACER
SI DELE1=VERDADERO ENTONCES
LEER R1 DE FA
DELE 1:= FALSO
FIN SI
-
7/24/2019 Orden Amien to Extern o
9/11
Organizacin y Manejo de Archivos, Apuntes de Clases
SI DELE2=VERDADERO ENTONCES
LEER R2 DE FB
DELE2:= FALSO
FIN SI
SI R1 < R2 ENTONCESSI R1 >= AUX ENTONCES
AYUDA1 (AUX, R1, FC, FD, B)
DELE1:=VERDADERO
SINO
SI R2 >=AUX ENTONCES
AYUDA1 (AUX, R2, FC, FD, B)
DELE2:=VERDADERO
SINO
AYUDA2 (AUX, R1, FC, FD, B)
DELE1:=VERDADERO
FIN SIFIN SI
SINO
SI R2 >= AUX ENTONCES
AYUDA1 (AUX, R2, FC, FD, B)
DELE2:=VERDADERO
SINO
SI R1 >=AUX ENTONCES
AYUDA1 (AUX, R1, FC, FD, B)
DELE1:=VERDADERO
SINO
AYUDA2 (AUX,, R2, FC, FD, B)DELE2:=VERDADERO
FIN SI
FIN SI
FIN SI
FIN MIENTRAS
SI (DELE1=VERDADERO) y (EOF FA) ENTONCES
AYUDA3 (R2, FB, FC, FD, B)
FIN SI
SI (DELE2=VERDADERO) y (EOF FB) ENTONCES
AYUDA3 (R1, FA, FC, FD, B)
FIN SI
AYUDA1 (AUX, R, FC, FD, B)
AUX:=R
SI B=VERDADERO ENTONCES
ESCRIBIR R EN FC
SINO
-
7/24/2019 Orden Amien to Extern o
10/11
Organizacin y Manejo de Archivos, Apuntes de Clases
ESCRIBIR EN FD
FIN SI
AYUDA2 (AUX, R, FC, FD, B)
AUX:=R
SI B=VERDADERO ENTONCESESCRIBIR R EN FD
B:=FALSO
SINO
ESCRIBIR R EN FC
B:=VERDADERO
FIN SI
AYUDA3 (R, F, FC, FD, B)
SI R >=AUX ENTONCES
AYUDA1 (R, FC, FD, B)
SINOAYUDA2 (R, FC, FD, B)
FIN SI
MIENTRAS NOT EOF F HACER
LEER R DE F
SI R >=AUX ENTONCES
AYUDA1 (AUX, R, FC, FD, B)
SINO
AYUDA2 (AUX, R, FC, FD, B)
FIN SI
FIN MIENTRAS
Ejemplo:
Ordenar el siguiente archivo, representando por las siguientes claves:
F: 9 75 14 68 29 17 31 25 4 5 13 18
72 46 61
Particin Inicial
F2: 9 75 29 25 46 61
F3: 14 68 17 31 4 5 13 18 72
Primera fusion-particion
F: 9 14 68 75 4 5 13 18 25 46 61 72
F1: 17 29 31
-
7/24/2019 Orden Amien to Extern o
11/11
Organizacin y Manejo de Archivos, Apuntes de Clases
Segunda fusion-particion
F2: 9 14 17 29 31 68 75
F3: 4 5 13 18 25 46 61 72
Tercera fusion-particion
F: 4 5 9 13 14 17 18 25 29 31 46 61
68 72 75
F1:
Al realizar la tercera fusion-particion el segundo archivo queda vaco, por lo que el archivo
ya se encuentra ordenado.