Orden Amien to Extern o

download Orden Amien to Extern o

of 11

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.