Está en la página 1de 12

Unidad IV: Algoritmos para Búsqueda, Ordenación y Fusión externas (en archivos en memoria secundaria,

externa)

INDICE DEL CONTENIDO

INTRODUCCION DE LA UNIDAD..................................................................................................4
1) Búsqueda externa .........................................................................................................................6
2) Ordenación externa: Partición de archivos, Ordenación por mezcla directa y Ordenación por
mezcla natural ......................................................................................................................................9
3) Fusión o mezcla...........................................................................................................................11
BIBLIOGRAFIA ................................................................................................................................13

4
Autores: Mtra. Agustina De los Santos Rosario y Mtro. Félix Ferreiras
Unidad IV: Algoritmos para Búsqueda, Ordenación y Fusión externas (en archivos en memoria secundaria,
externa)

INTRODUCCION DE LA UNIDAD

Imagen obtenida en: http://www.pisitoenmadrid.com/blog/2007/04/como-funciona-un-motor-de- busqueda/

En la unidad número 3 estuvimos tratando los conceptos referentes a los métodos de


ordenación interna: Selección, Burbuja, Inserción directa, Inserción binaria, Shell y Ordenación
rápida. Concepto de búsqueda interna: Búsqueda secuencial, Búsqueda binaria y Búsqueda por
transformación de clave. Como también la operación de intercalación.

Para que un algoritmo funciones correctamente, satisfaciendo los requerimientos de


usuarios, hay que tener dominio amplio de los diferentes métodos que se pueden
utilizar tanto para búsqueda como para ordenación en un arreglos (array) y la operación
que se puede realizar con arreglos (arrays). Así como también en los archivos

En esta unidad definiremos los conceptos Búsqueda externa, Ordenación externa:


Partición de archivos, Ordenación por mezcla directa y Ordenación por mezcla natural. Y
además Fusión o mezcla. Actividades que se llevan a cabo en Archivos.

5
Autores: Mtra. Agustina De los Santos Rosario y Mtro. Félix Ferreiras
Unidad IV: Algoritmos para Búsquedas, Ordenación y Fusión externas (en archivos en memoria secundaria$ UASD
externa) VIRTUAL

AI finalizar esta unidad los participantes estaran en Ia capacidad de:

Describir los metodos de ordenacion

[
ldentificar las busquedas que se realizan

[ en los archivos.

Entender en que consiste Ia operacion de

Autores: Mtra$ Agustina De los Santos Rosario y Mtro$ Felix Ferreiras


Unidad IV: Algoritmos para Búsqueda, Ordenación y Fusión externas (en archivos en memoria secundaria,
externa)

DESARROLLO DEL CONTENIDO

1) Búsqueda externa

Búsqueda externa: es el proceso de localizar un registro en un archivo con un valor


específico en uno de sus campos. Los archivos de organización secuencial obligan
a realizar las búsquedas secuenciales. Los archivos de organización directa
permiten mayores posibilidades de búsquedas.

En el rincón del vago encontramos la siguiente definición de algoritmo de búsqueda


externa:

Un algoritmo de búsqueda es un algoritmo que acepta un argumento a y trata de


encontrar un registro cuya llave sea a. El algoritmo puede dar como resultado el
registro entero o, lo que es más común, un apuntador a dicho registro.

Técnica Secuencial Ordenada/Desordenada: La búsqueda es el proceso de


localizar un registro (elemento) con un valor de llave particular. La búsqueda
termina exitosamente cuando se localiza el registro que contenga la llave buscada,
o termina sin éxito, cuando se determina que no aparece ningún registro con esa
llave.

Normalmente un archivo secuencial se almacena en bloques, en un orden


secuencial simple de los registros. La organización física del archivo en una cinta o
disco se corresponde exactamente con la ubicación lógica del archivo. En este
caso, el procedimiento para ubicar los nuevos registros en un archivo de pila
separado, llamado archivo de registro (log file) o archivo de transacciones.
Periódicamente, se realiza una actualización por lotes que mezcla el archivo de
registro con el archivo maestro para producir un nuevo archivo en secuencia
correcta de claves.

6
Autores: Mtra. Agustina De los Santos Rosario y Mtro. Félix Ferreiras
Unidad IV: Algoritmos para Búsqueda, Ordenación y Fusión externas (en archivos en memoria secundaria,
externa)

Búsqueda secuencial, también se le conoce como búsqueda lineal. Supongamos


una colección de registros organizados como una lista lineal. El algoritmo básico de
búsqueda secuencial consiste en empezar al inicio de la lista e ir a través de cada
registro hasta encontrar la llave indicada (k), o hasta al final de la lista.

La situación óptima es que el registro buscado sea el primero en ser examinado. El


peor caso es cuando las llaves de todos los n registros son comparados con k (lo
que se busca). El caso promedio es n/2 comparaciones.

Este método de búsqueda es muy lento, pero si los datos no están en orden es el
único método que puede emplearse para hacer las búsquedas. Si los valores de la
llave no son únicos, para encontrar todos los registros con una llave particular, se
requiere buscar en toda la lista.

Los archivos secuenciales son típicamente utilizados en aplicaciones de proceso de


lotes y son óptimos para dichas aplicaciones si se procesan todos los registros. La
organización secuencias de archivos es la única que es fácil de usar tanto en disco
como en cinta.

Un ejemplo claro para utilizar esta técnica de búsqueda es cuando se tiene una
base de datos no muy grande en un negocio pequeño donde los registros más
usados son llamados con frecuencia, es aquí donde esta técnica es fuerte, ya que
se aplica a un patrón de búsqueda pequeño, sencillo y manejable; es decir como si
fuera una descripción, es uno tras otro.

Técnica de Búsqueda Secuencial Indexada: Un método popular para superar las


desventajas de los archivos secuenciales es el del archivo secuencias indexado;
pero implica un aumento en la cantidad de espacio requerida.

7
Autores: Mtra. Agustina De los Santos Rosario y Mtro. Félix Ferreiras
Unidad IV: Algoritmos para Búsqueda, Ordenación y Fusión externas (en archivos en memoria secundaria,
externa)
Funciona de la siguiente manera: Se reserva una tabla auxiliar llamada índice
además del archivo ordenado mismo. Cada elemento en el índice consta de una
llave kindex y un apuntador al registro en el archivo que corresponde a kindex.

Los elementos en el índice al igual que los elementos en el archivo, deben estar
ordenados en la llave. Si el índice es de un octavo del tamaño del archivo, se
representa en el índice cada octavo registra el archivo.

Si el índice comienza a crecer tanto que se vuelve ineficaz se puede usar un índice
secundario que funciona casi de la misma forma que el índice principal, solo que
apunta a este, no a la tabla principal la búsqueda empieza con una exploración por
el índice secundario; esto nos lleva a un subarreglo en el índice principal; después
el procesamiento continua normalmente.

La organización secuencial indexada es conveniente para archivos con mediana


volatilidad, actividad variable y tamaño relativamente estable.

Un uso en la cual esta búsqueda se aplica, es donde se presenta el ingreso de


datos (registros) sin ningún tipo de orden especifico; pero en cada determinado
momento su campo llave es almacenado en un índice, en el cual esas llaves están
ordenadas de menor a mayor o de mayor a menor dependiendo el uso que se le
dé. De esta manera, para agilizar la búsqueda de un registro en particular se
accesa a ese registro por medio de su campo llave almacenado en el índice.

Un ejemplo de nuestra vida diaria y donde se aplica esta búsqueda es en un


negocio mediano (negocio de carnes frías, refaccionaria), ya que aquí se necesita
una búsqueda eficiente con una sola clave de acceso y otorgándonos la
información requerida.

8
Autores: Mtra. Agustina De los Santos Rosario y Mtro. Félix Ferreiras
Unidad IV: Algoritmos para Búsqueda, Ordenación y Fusión externas (en archivos en memoria secundaria,
externa)

2) Ordenación externa: Partición de archivos, Ordenación por mezcla


directa y Ordenación por mezcla natural

En los archivos de organización directa, para su ordenación permite utilizar


cualquiera de los métodos de clasificación utilizado en los arrays, pero con ligeras
modificaciones debido a las operaciones de lecturas y escrituras de registros en el
disco.

En los archivo de organización secuencial: Debemos emplear otros métodos, que


ordenan el archivo empleando los siguientes procesos:
 Partición: Los registros se leen del archivo de Entrada, no ordenado, y se
dividen entre distintos grupos de registros.
 Mezcla: Los registros de las distintas particiones se combinan de forma que
se obtienen series de registros ordenados.

Los métodos de ordenación externa más utilizados son: Partición de archivos,


Ordenación por mezcla directa y Ordenación por mezcla natural.

 Partición de archivo: Se puede efectuar por diferentes tipos:

o Partición por contenido: el archivo inicial se divide en dos o más


archivos dependiendo del valor de un determinado campo clave.

o Partición en secuencia de longitud 1: el fichero inicial se dividirá en


dos, colocando en un archivo los registros pares y en otro los
impares.

o Partición en secuencia de longitud N: consiste en partir el fichero


inicial en varios, copiando alternativamente en c/u de ellos secuencias
de longitud N.

o Partición en secuencia de longitud N con clasificación interna de


dichas secuencias: se trata de leer del archivo inicial grupos de N
registros que quepan en memoria. Cada grupo, al ser leído, se coloca

9
Autores: Mtra. Agustina De los Santos Rosario y Mtro. Félix Ferreiras
Unidad IV: Algoritmos para Búsqueda, Ordenación y Fusión externas (en archivos en memoria secundaria,
externa)

en una array y se ordena. Los grupos ordenados se escriben


alternativamente en dos o más archivos.

o Partición según el método de selección por sustitución: el archivo


inicial se divide en dos o más archivos con largas secuencias
ordenadas y consta de cinco pasos.

o Partición por el método de selección natural: evita el tener que


almacenar registros en un array y consiste en ir tomando secuencias
ordenadas de la máxima longitud que se copiaran alternativamente
sobre los ficheros de salida.

 Ordenación por mezcla directa: 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. En la primera pasada la
participación es de longitud 1 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 mayor o igual que la longitud de la secuencia para la partición sea mayor
o igual que el número de elementos del archivo original.

 Ordenación por mezcla natural: Es uno de los mejores métodos de


ordenación de ficheros secuenciales. Intenta aprovechar la posible
ordenación interna de las secuencias del archivo, para lo cual:

1. Efectúa la partición del archivo desordenado sobre otros varios utilizando


métodos de selección por sustitución o selección natural.

2. Realiza sucesivas fusiones de las secuencias ordenadas en estos


archivos, sobre escribiendo con ellas el archivo inicial. La fusión ha de
realizarse bajo el criterio de que en c/u de las secuencias resultantes
exista ordenación.

3. Los pasos 1 y 2 se repetirán hasta que el archivo esté ordenado.

10
Autores: Mtra. Agustina De los Santos Rosario y Mtro. Félix Ferreiras
Unidad IV: Algoritmos para Búsqueda, Ordenación y Fusión externas (en archivos en memoria secundaria,
externa)

3) Fusión o mezcla

La fusión o mezcla: consiste en reunir varios archivos en uno solo intercalándose


los registros de unos en otros y siguiendo unos criterios determinados.

Ejemplo:
 Dados dos ficheros ordenados obtener la fusión ordenada de ambos

 Dados dos ficheros obtener la fusión de ambos tomando alternativamente 1


registro de cada fichero de entrada (o 2, o 3, etc.)

El algoritmo de fusión de ficheros se utiliza para crear un fichero ordenado a partir


de dos ficheros ya ordenados.

El algoritmo funciona de la misma manera que lo haría una persona cuando mezcla
dos pilas de fichas ordenadas para conseguir una única pila con las fichas de las
dos anteriores: se comparan los primeros elementos de cada una de las pilas, y se
lleva a la nueva pila (la pila resultado) la ficha que según el criterio de ordenación
elegido va la primera.

En ese momento una de las pilas de origen tendrá una ficha menos, y se tendrá
que volver a comparar las fichas de cabeza de las pilas para elegir una nueva ficha
que llevar a la pila resultado. Llegará un momento en el que una de las pilas origen
se quede vacía y queden todavía fichas en la otra. Todas esas fichas irán
directamente a la pila de resultados.

En el capítulo 9 del libro Joyanes Aguilar, Luis; Rodríguez Baena, Luis; Fernández
Azuela, Matilde, (2003). Fundamentos de programación. McGraw-Hill. 3da. edición.
[PDF] se encuentran las operaciones que se llevan a cabo con los archivos.

Con la lectura de ese capítulo pueden entender el ejemplo que se muestra a


continuación.

11
Autores: Mtra. Agustina De los Santos Rosario y Mtro. Félix Ferreiras
Unidad IV: Algoritmos para Búsqueda, Ordenación y Fusión externas (en archivos en memoria secundaria,
externa)

Ejemplo, tomado de http://www.atc.us.es/asignaturas/fi/curso_de_c/Fusion_de_ficheros.html,


presenta la fusión de dos archivos ordenados:

#include <stdio.h>

main()
{
FILE *f_ent1, *f_ent2,*f_salida;
int reg1,reg2,regs;

f_ent1=fopen("c:\\entrada1.txt","rt");
f_ent2=fopen("c:\\entrada2.txt","rt");
f_salida=fopen("c:\\salida.txt","wt");

if(f_ent1!=NULL && f_ent2!=NULL && f_salida!=NULL)


{
fscanf(f_ent1,"%d\n",&reg1);
fscanf(f_ent2,"%d\n",&reg2);
while (!feof(f_ent1) && !feof(f_ent2))
{
if (reg1<=reg2)
{
fprintf(f_salida,"%d\n",reg1);
fscanf(f_ent1,"%d\n",&reg1);
}
else
{
fprintf(f_salida,"%d\n",reg2);
fscanf(f_ent2,"%d\n",&reg2);
}
}
while (!feof(f_ent1))
{
fscanf(f_ent1,"%d\n",&reg1);
fprintf(f_salida,"%d\n",reg1);
}
while (!feof(f_ent2))
{
fscanf(f_ent2,"%d\n",&reg2);
fprintf(f_salida,"%d\n",reg2);
}
printf("\nMezcla realizada\n");
}
if (f_ent1!=NULL)
fclose(f_ent1);
if (f_ent2!=NULL)
fclose(f_ent2);
if (f_salida!=NULL)
fclose(f_salida);
getchar();
}

12
Autores: Mtra. Agustina De los Santos Rosario y Mtro. Félix Ferreiras
Unidad IV: Algoritmos para Búsqueda, Ordenación y Fusión externas (en archivos en memoria secundaria,
externa)

BIBLIOGRAFIA

Joyanes Aguilar, Luis; Rodríguez Baena, Luis; Fernández Azuela, Matilde, (2003).
Fundamentos de programación. McGraw-Hill. 3da. edición. [PDF]

http://en.wikibooks.org/wiki/Algorithms

http://sistemas.itlp.edu.mx/tutoriales/algoritmos/index.htm

http://www.uco.es/~ma1fegan/2009-2010/edi-sistemas/Temas/FICHEROS/ordenacionExterna.pdf

http://www.atc.us.es/asignaturas/fi/curso_de_c/Fusion_de_ficheros.html

13
Autores: Mtra. Agustina De los Santos Rosario y Mtro. Félix Ferreiras

También podría gustarte