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.

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

él. Los mecanismos que realizan esta función son conocidos como algoritmos de<br />

búsqueda.<br />

El problema que se plantea a la hora de realizar una búsqueda (concretam<strong>en</strong>te<br />

<strong>en</strong> un array) puede ser <strong>en</strong>unciado de la sigui<strong>en</strong>te forma:<br />

Supongamos que t<strong>en</strong>emos un vector v con n elem<strong>en</strong>tos (los índices son los<br />

1. . .n) y pret<strong>en</strong>demos construir una función Busqueda que <strong>en</strong>cu<strong>en</strong>tre un índice<br />

i de tal forma que v[i] = elem, si<strong>en</strong>do elem el elem<strong>en</strong>to que se busca. Si no<br />

existe tal índice, la función debe devolver un cero, indicando así que el elem<strong>en</strong>to<br />

elem buscado no está <strong>en</strong> el vector v. En resum<strong>en</strong>,<br />

de forma que<br />

Busqueda : Vn(tElem) ×tElem −→ {0, 1, . . . , n}<br />

⎧<br />

⎪⎨ i ∈ {1, . . . , n} si existe i tal que elem = vi<br />

Busqueda(v,elem) =<br />

⎪⎩ 0 <strong>en</strong> otro caso<br />

En todo el capítulo se defin<strong>en</strong> los elem<strong>en</strong>tos del vector con el tipo tElem:<br />

const<br />

N = 100; {tama~no del vector}<br />

type<br />

tIntervalo = 0..N;<br />

tVector = array [1..N] of tElem;<br />

Para simplificar, digamos por ahora que tElem es un tipo ordinal, si<strong>en</strong>do por<br />

tanto comparables sus valores.<br />

Los algoritmos más usuales que se pued<strong>en</strong> desarrollar para tal fin son los<br />

algoritmos de búsqueda secu<strong>en</strong>cial y búsqueda binaria. 1<br />

15.1.1 Búsqueda secu<strong>en</strong>cial<br />

La búsqueda secu<strong>en</strong>cial consiste <strong>en</strong> comparar secu<strong>en</strong>cialm<strong>en</strong>te el elem<strong>en</strong>to<br />

deseado con los valores cont<strong>en</strong>idos <strong>en</strong> las posiciones 1, . . . , n hasta que, o bi<strong>en</strong><br />

<strong>en</strong>contremos el índice i buscado, o lleguemos al final del vector sin <strong>en</strong>contrarlo,<br />

concluy<strong>en</strong>do que el elem<strong>en</strong>to buscado no está <strong>en</strong> el vector.<br />

La búsqueda secu<strong>en</strong>cial es un algoritmo válido para un vector cualquiera<br />

sin necesidad de que esté ord<strong>en</strong>ado. También se puede aplicar con muy pocas<br />

1 Conocida también con los nombres de búsqueda dicotómica o por bipartición.

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

Saved successfully!

Ooh no, something went wrong!