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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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

w[k]:= vec[i];<br />

i:= i + 1<br />

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

else begin<br />

w[k]:= vec[j];<br />

j:= j + 1<br />

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

k:= k + 1;<br />

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

for k:= j to de do<br />

w[k]:= vec[k]<br />

for k:= i to ce do<br />

w[k+de-ce]:= vec[k]<br />

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

begin {MergeSortDesdeHasta}<br />

c<strong>en</strong>tro:= (izq + der) div 2;<br />

if izq < c<strong>en</strong>tro th<strong>en</strong><br />

MergeSortDesdeHasta(v, izq, c<strong>en</strong>tro);<br />

if c<strong>en</strong>tro < der th<strong>en</strong><br />

MergeSortDesdeHasta(v, c<strong>en</strong>tro+1, der);<br />

Merge(v, izq, c<strong>en</strong>tro, der, v)<br />

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

begin {MergeSort}<br />

MergeSortDesdeHasta(vector, 1, N)<br />

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

Para facilitar la compr<strong>en</strong>sión del método se ha realizado un ejemplo, provocando<br />

algunas llamadas sobre el vector inicial v= [8, 5, 7, 3] y mostrando el<br />

vector tras cada llamada:<br />

v = [8, 5, 7, 3]<br />

MergeSortDesdeHasta(v,1,2) v = [5, 8, 7, 3]<br />

MergeSortDesdeHasta(v,3,4) v = [5, 8, 3, 7]<br />

Merge(v,1,2,4,v) v = [3, 5, 7, 8]<br />

15.2.6 Vectores paralelos<br />

Supóngase que se desea ord<strong>en</strong>ar un vector vectFich de la forma<br />

array[1..N] of tFicha<br />

si<strong>en</strong>do el tipo tFicha de un gran tamaño.

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

Saved successfully!

Ooh no, something went wrong!