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.

15.2. Ord<strong>en</strong>ación de arrays 309<br />

if posM<strong>en</strong>or i th<strong>en</strong> begin<br />

{Si el m<strong>en</strong>or no es v[i], se intercambian los valores}<br />

aux:= v[i];<br />

v[i]:= v[posM<strong>en</strong>or];<br />

v[posM<strong>en</strong>or]:= aux<br />

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

<strong>en</strong>d; {for i}<br />

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

15.2.2 Inserción directa<br />

Este algoritmo recorre el vector v insertando el elem<strong>en</strong>to vi <strong>en</strong> su lugar correcto<br />

<strong>en</strong>tre los ya ord<strong>en</strong>ados v1, . . . ,vi−1. El esquema g<strong>en</strong>eral de este algoritmo<br />

es:<br />

1. Se considera v1 como primer elem<strong>en</strong>to.<br />

2. Se inserta v2 <strong>en</strong> su posición correspondi<strong>en</strong>te <strong>en</strong> relación a v1 y v2.<br />

3. Se inserta v3 <strong>en</strong> su posición correspondi<strong>en</strong>te <strong>en</strong> relación a v1, . . . ,v3.<br />

. . .<br />

. . .<br />

i. Se inserta vi <strong>en</strong> su posición correspondi<strong>en</strong>te <strong>en</strong> relación a v1, . . . ,vi.<br />

n. Se inserta vn <strong>en</strong> su posición correspondi<strong>en</strong>te <strong>en</strong> relación a v1, . . . ,vn.<br />

En el diagrama de la figura 15.1 se muestra un ejemplo de aplicación de este<br />

algoritmo.<br />

At<strong>en</strong>di<strong>en</strong>do a esta descripción, el diseño desc<strong>en</strong>d<strong>en</strong>te de este algoritmo ti<strong>en</strong>e<br />

como primer nivel el sigui<strong>en</strong>te:<br />

para cada i <strong>en</strong>tre 2 y N hacer<br />

Situar v[i] <strong>en</strong> su posición ord<strong>en</strong>ada respecto a v[1],. . . , v[i-1]<br />

Donde Situar v[i] <strong>en</strong> su posición ord<strong>en</strong>ada respecto a v[1],. . . , v[i-1]<br />

puede refinarse de la sigui<strong>en</strong>te forma:<br />

Localizar la posición j <strong>en</strong>tre 1 e i-1 correspondi<strong>en</strong>te a v[i];<br />

Desplazar una posición las compon<strong>en</strong>tes v[j+1],. . . , v[i-1];<br />

v[j]:= v[i]<br />

Por lo tanto, una implem<strong>en</strong>tación de este algoritmo será:

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

Saved successfully!

Ooh no, something went wrong!