09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

322 Capítulo 15. <strong>Algoritmos</strong> de búsqueda y ord<strong>en</strong>ación<br />

procedure BuscarOrd(var f: tArchivoElems; c: clave;<br />

var elem: tElem; var <strong>en</strong>contrado: boolean);<br />

{PostC.: si c está <strong>en</strong> f <strong>en</strong>tonces <strong>en</strong>contrado = True y elem es<br />

el elem<strong>en</strong>to buscado; <strong>en</strong> otro caso <strong>en</strong>contrado = False}<br />

var<br />

ultimaClave: clave;<br />

begin<br />

<strong>en</strong>contrado:= False;<br />

ultimaClave:= cota superior de las claves;<br />

while not EoF(f) and ultimaClave > c do begin<br />

Read(f, elem);<br />

if c = elem.clave th<strong>en</strong><br />

<strong>en</strong>contrado:= True;<br />

ultimaClave:= elem.clave<br />

<strong>en</strong>d {while}<br />

<strong>en</strong>d; {BuscarOrd}<br />

15.4 Mezcla y ord<strong>en</strong>ación de archivos secu<strong>en</strong>ciales<br />

Una de las operaciones fundam<strong>en</strong>tales <strong>en</strong> el proceso de archivos es el de su<br />

ord<strong>en</strong>ación, de forma que las compon<strong>en</strong>tes contiguas cumplan una cierta relación<br />

de ord<strong>en</strong>.<br />

Cuando los archivos t<strong>en</strong>gan un tamaño pequeño pued<strong>en</strong> leerse y almac<strong>en</strong>arse<br />

<strong>en</strong> un array, pudiéndose aplicar las técnicas de ord<strong>en</strong>ación estudiadas para<br />

arrays. Estas técnicas son también aplicables a archivos de acceso directo (véase<br />

el apartado B.9).<br />

Por último, cuando el único acceso permitido a los archivos es el secu<strong>en</strong>cial,<br />

como <strong>en</strong> los archivos de <strong>Pascal</strong>, es necesario recurrir a algoritmos específicos para<br />

dicha ord<strong>en</strong>ación.<br />

El método más frecu<strong>en</strong>te de ord<strong>en</strong>ación de archivos secu<strong>en</strong>ciales es <strong>en</strong> realidad<br />

una variante no recursiva del algoritmo Merge Sort estudiado para arrays <strong>en</strong> el<br />

apartado anterior. Consiste <strong>en</strong> dividir el archivo orig<strong>en</strong> <strong>en</strong> dos archivos auxiliares<br />

y después mezclarlos ord<strong>en</strong>adam<strong>en</strong>te sobre el propio archivo orig<strong>en</strong>, obt<strong>en</strong>i<strong>en</strong>do<br />

de esta forma, al m<strong>en</strong>os, pares de valores ord<strong>en</strong>ados. Si ahora se vuelve a dividir<br />

el archivo orig<strong>en</strong> y se mezclan otra vez, se obti<strong>en</strong><strong>en</strong>, al m<strong>en</strong>os, cuádruplas de<br />

valores ord<strong>en</strong>ados, y así sucesivam<strong>en</strong>te hasta que todo el archivo esté ord<strong>en</strong>ado.<br />

A este proceso que usa dos archivos auxiliares se le d<strong>en</strong>omina de mezcla<br />

simple. Si se usan más archivos auxiliares, se llama de mezcla múltiple, con el<br />

que se puede mejorar el tiempo de ejecución.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!