Documente Academic
Documente Profesional
Documente Cultură
Ordenacin. Introduccin
n
Aunque no se han estudiado, existen ms estructuras de datos como rboles y grafos. Todas estas estructuras sirven para almacenar informacin de un modo adecuado que permita su recuperacin (bsqueda) de la forma ms eficiente posible. Por ello, los algoritmos de ordenacin son fundamentales y, como ejemplos tpicos (y sencillos), estudiaremos algunos de los algoritmos de ordenacin de vectores ms comunes.
2
2.
Se accede a sus componentes de forma directa; por ejemplo: a(3) permite acceder (para leer o escribir) la tercera componente de un vector denominado a. Los vectores tienen un tamao fijo que queda determinado en el momento de su declaracin; por ejemplo, la declaracin coordenadas vector (3) de real limita el tamao del vector coordenadas a 3 componentes.
3
3.
Recorrido: procesar todos los elementos del vector. Bsqueda: recorrer el vector hasta encontrar una componente que cumple una propiedad determinada. Ordenacin: recolocar los elementos del vector para que mantengan una determinada relacin de orden.
El primer esquema es muy sencillo, en esta leccin nos centraremos en la ordenacin dejando para su posterior estudio los algoritmos de bsqueda.
4
Los algoritmos de ordenacin (ya sean de vectores o de otro tipo de estructura de datos) deben obtener una permutacin ordenada de los elementos presentes en la estructura. La mayora de algoritmos de ordenacin de vectores se basan en realizar intercambios entre las componentes del mismo. Existen mltiples algoritmos de ordenacin de vectores diferencindose por su eficiencia; nosotros estudiaremos los siguientes:
n n n n
Mtodo de la burbuja. Mtodo de la burbuja con seal. Ordenacin por sacudida. Ordenacin rpida (quicksort ).
La idea bsica de este algoritmo consiste en considerar todos los intercambios posibles hasta deshacer todas las inversiones existentes en el vector. En todos los ejemplos que se presenten se utilizar un tipo ficticio elemento para el que se supone que existe una relacin de orden.
subrutina burbuja (v vector(MAX) de elemento) variables i,j entero temp elemento inicio desde i1 hasta MAX-1 hacer desde j MAX hasta i+1 con paso 1 hacer si v(j)<v(j-1) entonces tempv(j) v(j)v(j-1) v(j-1) temp fin si fin desde fin desde fin
desde i 1 hasta MAX-1 hacer desde j MAX hasta i+1 con paso 1 hacer si v(j)<v(j-1) entonces temp v(j) v(j) v(j-1) v(j-1) temp fin si Asntota para el tiempo de ejecucin fin desde 140 fin desde
Tiempo mximo de ejecucin 120
100
80
60
40
20
Como se puede apreciar, en caso de que el vector est inicialmente ordenado, el mtodo de la burbuja con seal ejecuta el bucle ms interno de forma completa una sola vez; de ah que la complejidad de este algoritmo para el caso mejor sea O(n).
Pasos ejecutados para ordenar un vector ya ordenado
50 Pasos ejecutados 45 40 35 30 25 20 15 10 5 0 1 2 3 4 5 6 7 8 9 10 Tamao del vector Burbuja Burbuja seal
FIN DE LA EJECUCIN
11
12
Ordenacin. Resumen
n n
Los algoritmos de ordenacin son fundamentales, un ejemplo tpico y muy sencillo de los mismos son los algoritmos de ordenacin de vectores. Las dos caractersticas principales de los vectores son las siguientes:
1. 2.
Se accede a sus componentes de forma directa. Los vectores tienen un tamao fijo determinado en el momento de su declaracin.
Los algoritmos de tratamiento de vectores responden a tres esquemas bsicos: recorrido, bsqueda y ordenacin. Los algoritmos de ordenacin deben obtener una permutacin ordenada de los elementos presentes en la estructura. La mayora de algoritmos de ordenacin de vectores se basan en realizar intercambios entre las componentes del mismo. En la leccin de hoy se han estudiado los mtodos de la burbuja y la burbuja con seal; ambos tienen una complejidad O(n2) salvo para el caso mejor (un vector ya ordenado), en esa situacin la burbuja con seal tiene complejidad O(n).
13