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.

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

Separar<br />

Ord<strong>en</strong>ar<br />

sort<br />

izq der<br />

p<br />

Pivote<br />

v[l] < p p v[n] > p<br />

izq < l < p k < n < der<br />

sort sort<br />

Figura 15.3.<br />

los dos bloques, por lo que, cuando el número de elem<strong>en</strong>tos es pequeño, no es<br />

“r<strong>en</strong>table” utilizar Quick Sort.<br />

En este apartado vamos a desarrollar el algoritmo Quick Sort con la primera<br />

condición de parada, dejando al lector el desarrollo de la segunda versión.<br />

Este algoritmo sigue el esquema conocido con el nombre de divide y v<strong>en</strong>cerás<br />

(véase el apartado 20.2) que, básicam<strong>en</strong>te, consiste <strong>en</strong> subdividir el problema<br />

<strong>en</strong> dos iguales pero de m<strong>en</strong>or tamaño para posteriorm<strong>en</strong>te combinar las dos<br />

soluciones parciales obt<strong>en</strong>idas para producir la solución global.<br />

El seudocódigo correspondi<strong>en</strong>te al primer nivel <strong>en</strong> el diseño desc<strong>en</strong>d<strong>en</strong>te del<br />

algoritmo Quick Sort es:<br />

si v es de tamaño 1 <strong>en</strong>tonces<br />

v ya está ord<strong>en</strong>ado<br />

si no<br />

Dividir v <strong>en</strong> dos bloques A y B<br />

con todos los elem<strong>en</strong>tos de A m<strong>en</strong>ores que los de B<br />

fin {si}<br />

Ord<strong>en</strong>ar A y B usando Quick Sort<br />

Devolver v ya ord<strong>en</strong>ado como concat<strong>en</strong>ación<br />

de las ord<strong>en</strong>aciones de A y de B

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

Saved successfully!

Ooh no, something went wrong!