Ordenamiento Externo Introduccin Es las organizaciones es muy comn procesar grandes volmenes de informacin que no es posible almacenar los datos en la memoria principal, debido a la caracterstica voltil de sta y su escaso tamao Por esta razn la informacin se almacena en los dispositivos de memoria secundaria como son los discos duros, cintas, etc. La informacin mayormente se organiza en bases de datos que contienen tablas o archivos. Un archivo secuencial es aqul cuyos registros ocupan posiciones consecutivas. Todo registro tiene por lo general un campo que lo identifica de manera nica llamado campo clave. Introduccin El proceso de ordenar los datos almacenados en varios archivos se conoce como fusin o mezcla. Fusin se entiende como la combinacin o intercalacin de dos o ms secuencias ordenadas de registros en una nica secuencia ordenada.
Intercalacin de archivos Es la unin o fusin de dos o ms archivos, ordenados de acuerdo con un determinado campo clave, en un slo archivo. Supongamos que se tienen dos archivos ordenados ascendentemente por una clave. Se van comparando las claves de cada archivo y aquel con menor clave se copia su registro a un tercer archivo y as hasta finalizar cualquiera de los dos archivos. Una vez que se detecte el fin de uno de los archivos, slo se tendr que copiar el resto de los registros del otro archivo. Intercalacin de archivos Por Ejemplo se tiene 2 archivos F1 y F2 ordenados ascendentemente. F1: 05 08 20 24 36 F2: 11 17 23 29 55 60 84 Debe producirse un archivo F3 ordenado con los elementos de F1 y F2. Realizamos las siguientes comparaciones 05 < 11 S se cumple Se copia el reg. correspondiente de F1 en F3, se lee otra clave de F1 (08) 08 < 11 S se cumple Se copia el reg. correspondiente de F1 en F3, se lee otra clave de F1 (20) Intercalacin de archivos 20 < 11 No se cumple Se copia el reg. correspondiente de F2 en F3, se lee otra clave de F2 (17) El estado de los archivos F1, F2 y F3 hasta el momento es: F1: 05 08 20 24 36 F2: 11 17 23 29 55 60 84 F3: 05 08 11 Finalmente F3 queda como sigue: F3: 05 08 11 17 20 23 24 29 36 55 60 84
Ordenacin de archivos La ordenacin de archivos se realiza cuando la cantidad de datos es demasiado grande y no caben en la memoria principal. Se entiende como la clasificacin de los registros de un archivo ascendentemente o descendentemente, de acuerdo a un campo clave. La principal desventaja de esta ordenacin es el tiempo de ejecucin, debido a las sucesivas operaciones de entrada y salida. Los dos mtodos ms importantes son: Mezcla directa Mezcla equilibrada. Ordenacin por Mezcla Directa Consiste en la realizacin sucesiva de una particin y una fusin o mezcla que produce secuencias ordenadas de longitud cada vez mayor. La idea de este algoritmo consiste: 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 se repite hasta que la longitud de la secuencia para la particin sea: Parte entera ((n+1)/2) Donde n es el nmero de registros Ordenacin por Mezcla Directa Por ejemplo ordenar ascendentemente: F: 09, 75, 14, 68, 29, 17, 31, 25, 04, 05, 13, 18, 72, 46, 61 Se usan dos archivos auxiliares F1 y F2. Primera Pasada: Particin en secuencias de longitud 1 F1: 09 14 29 31 04 13 72 61 F2: 75 68 17 25 05 18 46 Fusin en secuencias de longitud 2. F: 09 75 14 68 17 29 25 31 04 05 13 18 46 72 61 Clasificacin por 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 Clasificacin por 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.
Clasificacin por Mezcla Equilibrada Es conocido como mezcla natural y optimiza el mtodo de mezcla directa. La idea del algoritmo consiste en: Realizar las particiones tomando secuencias ordenadas de mxima longitud. Realizar la fusin de las secuencias ordenadas, alternativamente sobre dos archivos. Aplicando estas acciones en forma repetida se lograr que el archivo original quede ordenado. Se requiere de cuatro archivos, F el archivo original y F1, F2, F3 Dos de entrada: F2 y F3 y dos de salida F y F1 Termina cuando en la realizacin de una fusin-particin en el segundo archivo quede vaco. Clasificacin por Mezcla Equilibrada Por ejemplo se desea ordenar el archivo F. Se usan tres archivos auxiliares F1, F2 y F3. F: 09 75 14 68 29 17 31 25 04 05 13 18 72 46 61 Primera Pasada: Particin inicial F2: 09 75 29 25 46 61 F3: 14 68 17 31 04 05 13 18 72
Clasificacin por 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: Bsqueda Externa Bsqueda Externa Se utilizan cuando los datos estn almacenados en memoria secundaria mediante archivos. Se usan archivos por que el volumen de datos es grande o se exige su permanencia. Operaciones de escritura y lectura tienen alto costo en tiempo. Para reducir el costo es importante optimizar la operacin de bsqueda. Las ms importantes son: Bsqueda Secuencial (desordenado y ordenado) Bsqueda Secuenciales por Bloques Bsqueda secuencial con ndices. Bsqueda Secuencial Consiste en recorrer el archivo comparando la clave buscada con la clave del registro actual. El recorrido finaliza cuando: Se encuentra el elemento Cuando se alcanza el final del archivo (EOF) es decir cuando la bsqueda no tuvo xito. Si el archivo est ordenado se puede optimizar la bsqueda finalizando el recorrido cuando el valor buscado es menor o igual que la clave del registro actual. Si la clave es igual se encontr el elemento Si se lleg al final del archivo o la clave es menor entonces la bsqueda no tuvo xito.
Consiste en tomar bloques de registros. El tamao del bloque es arbitrario y depende del nmero de registros. Mayormente se considera el tamao igual a: Bsqueda secuencial por bloques El archivo debe estar ordenado La bsqueda se realiza comparando clave con el ltimo registro de cada bloque. Si la clave es menor entonces se busca secuencialmente en el bloque. Si la clave es mayor se contina con el siguiente bloque.
n Trabaja con bloques y con archivos de ndices El archivo de ndices almacena las claves que hacen referencia a cada bloque y la direccin de los bloques en el archivo. La bsqueda se realiza de la siguiente manera: Se recorre el archivo de ndices comparando con la clave del elemento buscado. Una vez determinado el bloque donde puede estar el registro buscado, se contina la bsqueda recorriendo secuencialmente este bloque. Una forma de acelerar el proceso de bsqueda es mantener en memoria principal el archivo de ndices.