Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ORDENACIÓN DE ARREGLOS
Con frecuencia se requiere clasificar u ordenar los elementos de un vector (arreglo
unidimensional) en algún orden en particular. Por ejemplo, ordenar un conjunto de
números en orden creciente o una lista de nombres en orden alfabético.
En esta lectura se explicarán los métodos de ordenación (en orden ascendente) aplicados
a vectores, pero se pueden extender a matrices (arreglos bidimensionales) y
multidimensionales considerando la ordenación respecto de una fila o una columna.
Método de Shell
Selección
finDesde
98 96 16 90 120 80
16 96 98 90 120 80
16 80 98 90 120 96
16 80 90 98 120 96
16 80 90 96 120 98
(120)
16 80 90 96 98 120
la ordenación del ejemplo ordena un vector de double. Si los elementos a ordenar son
El método quicksort se basa en el hecho de que es más rápido y más fácil ordenar dos
listas pequeñas que una grande. Se denomina método de ordenación rápida porque,
puede ordenar una lista de datos mucho más rápidamente que cualquiera de los métodos
lista a clasificar almacenada en un vector se divide en dos sublistas: una con todos los
valores, menores o iguales a un cierto valor específico y otra con todos los valores
mayores que ese valor. El valor elegido puede ser cualquier valor arbitrario del vector. Este
18 11 27 13 9 4 6
En el primer paso, el vector se divide en tres partes. Si se elige como pivote el elemento de
la posición central, obtenemos los subvectores VI y VD, donde VI contiene los elementos
ubicados a la izquierda del pivote y VD los elementos a la derecha, ambos subvectores sin
ordenar.
18 11 27 13 9 4 16
pivote
VI VD
18 11 27 13 9 4 16
4 11 27 13 9 18 16
Quicksort se basa en el principio que cualquier intercambio que se realice debe tener
lista.
Se sigue recorriendo el subvector VI y se encuentra un nuevo valor mayor que 13 (el 27), y
9).
4 11 27 13 9 18 16
4 11 9 13 27 18 16
Al intentar el proceso una vez más se encuentra que no existe ningún valor que esté fuera
de lugar. En este punto se ha obtenido que todos los valores a la izquierda sean menores
que los que se encuentran a la derecha del pivote. Ninguna de ambas sublistas esta
como pivote) y al subvector de la derecha (con 18 como pivote) y finalmente la lista estará
ordenada:
4 9 11 13 16 18 27
En resumen, el método consiste en dividir la lista inicial en cierto lugar y trasladar los
sublistas, haciendo lo mismo, hasta que solo nos quede un elemento de cada una.
Quicksort no divide cada lista en dos partes iguales, sino que la divide por la posición
Quicksort
Trasladar
Hasta que i 2. Buscar desde la derecha con j hasta que V[j] < pivote
rebase a j 3. Intercambiar V[i] con V[j]
Eficiencia
del deseo de obtener mayor velocidad. Hay dos maneras de comparar la eficiencia de
operaciones básicas que tiene que realizar. Solo consideramos como operaciones básicas
Referencias:
BISHOP Judy. (1999). Java Fundamentos de Programación
DEITEL & Deitel. (1999). C++ como programar. Segunda Edición. Prentice may.
GREG, Perry. (1993). Aprendiendo Programación Orientada a Objetos con Turbo C++ en