![]() |
Haga click para publicitar en Alipso.com |
| Buscando Secundarios
| Universidades
| Carreras
| Test
Orientación Vocacional | Medios
| Profesores particulares
| Institutos
| Campus Material Monografias | Exámenes Secundarios | Exámenes Universitarios | Enlaces | Enviar material | Diversión Postales | Humor | Descargas | Juegos Comunidad Foros | Institucional Publicite | En su sitio | Contáctese Cursos en Buenos Aires Cursos de Informática | Cursos de apoyo al CBC | Carreras y Cursos de Diseño, Comunicación, Arte y Fotografía |
|
|
Imprimir apunte |
Recomendar a un amigo |
Recordarme el recurso |
|
Más sobre este recurso: Catalogado en base de datos como: El programa Quicksort y funciones.: FUNCION PARTICION, PROGRAMA QUICKSORT, PROCEDIMIENTO PERFIL. Agregado: 29 de AGOSTO de 2000 | Palabras: 733 | Votar! | Sin Votos | Sin comentarios | Agregar Comentario Categoría: Apuntes y Monografías > Computación > Shareware > |
|
FUNCION PARTICION
La función partición utiliza los
elementos definidos en el módulo TIPOS.O y recibe como entradas:
1. - el vector
en el que moverá el pivote, pasado por referencia, ya que se ha de modificar,
no es conveniente duplicarlo, es decir, pasarlo por valor, ya que ocuparía con
cada recursión más y más memoria.
2. - los indices
que indican la parte del vector que será modificada, es decir, elemento
superior e inferior de la zona a modificar, con lo cual acotamos la zona del
vector que se modificará.
3. - el
elemento que va a ser utilizado como pivote en la partición.
La función emplea el algoritmo
estudiado en las clases de teoría de la asignatura, es decir, dado un vector y
un elemento (pivote), modifica la posición de dicho elemento hasta dejarla con
todos lo elementos a su derecha mayores o iguales a él y con todos los
elementos a su izquierda menores a él.
PROGRAMA QUICKSORT
El programa QUICKSORT, que incluye el
procedimiento del mismo nombre, muestra un menú donde se da a elegir la función
que se quiere que realice el programa, es decir, si se quiere ordenar un
vector, mediante el procedimiento quicksort, o si se quiere realizar el
perfil temporal de dicha ordenación, tomando diversos tamaños de vector y
obteniendo la media de varias pruebas para cada tamaño.
Si se elige ordenar el vector, el
programa pide la longitud que se le quiere dar y luego da a elegir entre
introducirle el vector por teclado o que lo haga el programa por si solo, si se
elige esta última opcion, el programa lo genera mediante el procedimiento genera_instancia,
en caso contrario se pide al usuario que introduzca el valor de los elementos
del vector a traves del teclado. Una vez dado el vector el programa lo ordena a
traves del procedimiento quicksort.
El procedimiento quicksort produce una partición
del vector de entrada (o sea, de la zona del vector original sobre la cual
actua ) y vuelve a actuar recursivamente sobre las dos partes generadas por el procedimiento
partición.
PROCEDIMIENTO PERFIL
La otra opción del programa, la de
obtener el perfil temporal del programa de ordenación, es más automática ya que
el programa a traves del módulo perfil.o genera los vectores con
distintos tamaños, las distintas instancias y hace las repeticiones necesarias
para obtener un resultado fiable, tomando como resultado final la media de los
tiempos individuales.
El resultado del procedimiento perfil se
guarda en un vector que tiene la siguiente estructura:
tperfil_alg:
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
|
10 |
50 |
100 |
200 |
400 |
600 |
800 |
1000 |
1200 |
1400 |
1600 |
1800 |
2000 |
|
p | m |
p | m |
p | m |
p | m |
p | m |
p | m |
p | m |
p | m |
p | m |
p | m |
p | m |
p | m |
p | m |
Se trata de un vector de registros,
donde cada registro tiene tres campos, uno con el tamaño del vector para dicho
caso, y otros dos donde guardará los resultados del perfil para los casos peor
y el caso promedio de cada problema.
El funcionamiento del procedimiento
perfil es el siguiente:
Para cada tamaño de problema el
procedimiento perfil realiza diversas instancias, y para cada una de ellas,
dependiendo del tamaño del vector, repite la ordenacion varias veces y obtiendo
finalmente la media de las distintas repeticiones realizadas. Ademas tambien
realiza el perfil en el caso peor de ordenación del vector, es decir, cuando el
vector está ordenado de modo descendente.
Los resultados obtenidos son los
siguientes:
|
|
Promedio |
Peor |
|
10 |
0.04 |
0.05 |
|
50 |
0.37 |
0.27 |
|
100 |
1.14 |
1.09 |
|
200 |
3.82 |
3.64 |
|
400 |
12.41 |
13.10 |
|
600 |
22.77 |
29.58 |
|
800 |
33.76 |
51.57 |
|
1000 |
44.77 |
78.26 |
|
1200 |
55.33 |
111.48 |
|
1400 |
66.25 |
150.80 |
|
1600 |
76.53 |
197.17 |
|
1800 |
86.20 |
247.52 |
|
2000 |
98.17 |
305.76 |

|
|
Promedio |
Peor |
|
10 |
0.03 |
0.04 |
|
50 |
0.29 |
0.27 |
|
100 |
0.61 |
0.55 |
|
200 |
0.63 |
0.73 |
|
400 |
0.44 |
1.46 |
|
600 |
0.38 |
1.14 |
|
800 |
0.30 |
1.52 |
|
1000 |
0.49 |
1.82 |
|
1200 |
0.30 |
2.28 |
|
1400 |
0.52 |
0.000 |
|
1600 |
0.20 |
3.03 |
|
1800 |
0.24 |
0.000 |
|
2000 |
0.49 |
0.000 |

| ||||
| X | ||||