Está en la página 1de 3

TIPOS DE ORDENAMIENTO PARA VECTORES

EL ORDENAMIENTO DE BURBUJA (BUBBLE SORT EN


INGLÉS)
es un sencillo algoritmo de ordenamiento. Funciona revisando cada
elemento de la lista que va a ser ordenada con el siguiente,
intercambiándolos de posición si están en el orden equivocado. Es
necesario revisar varias veces toda la lista hasta que no se necesiten
más intercambios, lo cual significa que la lista está ordenada. Este
algoritmo obtiene su nombre de la forma con la que suben por la lista
los elementos durante los intercambios, como si fueran pequeñas
"burbujas". También es conocido como el método del intercambio
directo.
Dado que solo usa comparaciones para operar elementos, se lo
considera un algoritmo de comparación, siendo el más sencillo de
implementar.

QUICKSORT:
Quicksort en acción sobre una lista de números aleatorios. Las líneas
horizontales son valores pivote.
El ordenamiento rápido (quicksort en inglés) es un algoritmo basado
en la técnica de divide y vencerás, que permite, en promedio, ordenar n
elementos en un tiempo proporcional a n log n.

Descripción del algoritmo


El algoritmo fundamental es el siguiente:
Elegir un elemento de la lista de elementos a ordenar, al que
llamaremos pivote. Resituar los demás elementos de la lista a cada
lado del pivote, de manera que a un lado queden todos los menores que
él, y al otro los mayores. Los elementos iguales al pivote pueden ser
colocados tanto a su derecha como a su izquierda, dependiendo de la
implementación deseada. En este momento, el pivote ocupa
exactamente el lugar que le corresponderá en la lista ordenada.
La lista queda separada en dos sublistas, una formada por los
elementos a la izquierda del pivote, y otra por los elementos a su
derecha.
Repetir este proceso de forma recursiva para cada sublista mientras
éstas contengan más de un elemento. Una vez terminado este proceso
todos los elementos estarán ordenados.
Como se puede suponer, la eficiencia del algoritmo depende de la
posición en la que termine el pivote elegido.
En el mejor caso, el pivote termina en el centro de la lista, dividiéndola
en dos sublistas de igual tamaño. En este caso, el orden de complejidad
del algoritmo es O(n·log n).
En el peor caso, el pivote termina en un extremo de la lista. El orden de
complejidad del algoritmo es entonces de O(n²). El peor caso dependerá
de la implementación del algoritmo, aunque habitualmente ocurre en
listas que se encuentran ordenadas, o casi ordenadas. Pero
principalmente depende del pivote, si por ejemplo el algoritmo
implementado toma como pivote siempre el primer elemento del array, y
el array que le pasamos esta ordenado, siempre va a generar a su
izquierda un array vacío, lo que es ineficiente.

ORDENAMIENTO POR INSERCIÓN


Ejemplo de ordenamiento por inserción ordenando una lista de
números aleatorios.

El ordenamiento por inserción (insertion sort en inglés) es una


manera muy natural de ordenar para un ser humano, y puede usarse
fácilmente para ordenar un mazo de cartas numeradas en forma
arbitraria. Requiere O(n2) operaciones para ordenar una lista de n
elementos.

Inicialmente se tiene un solo elemento, que obviamente es un conjunto


ordenado. Después, cuando hay k elementos ordenados de menor a
mayor, se toma el elemento k+1 y se compara con todos los elementos
ya ordenados, deteniéndose cuando se encuentra un elemento menor
(todos los elementos mayores han sido desplazados una posición a la
derecha). En este punto se inserta el elemento k+1 debiendo
desplazarse los demás elementos.

ORDENAMIENTO POR CASILLEROS


Los elementos se distribuyen en cubos

Luego se ordenan los elementos de cada cubo

El ordenamiento por casilleros (bucket sort en inglés) es un algoritmo


de ordenamiento que distribuye todos los elementos a ordenar entre un
número finito de casilleros. Cada casillero sólo puede contener los
elementos que cumplan unas determinadas condiciones. En el ejemplo
esas condiciones son intervalos de números. Las condiciones deben ser
excluyentes entre sí, para evitar que un elemento pueda ser clasificado
en dos casilleros distintos. Después cada uno de esos casilleros se
ordena individualmente con otro algoritmo de ordenación (que podría
ser distinto según el casillero), o se aplica recursivamente este algoritmo
para obtener casilleros con menos elementos. Se trata de una
generalización del algoritmo Pigeonhole sort. Cuando los elementos a
ordenar están uniformemente distribuidos la complejidad
computacional de este algoritmo es de O(n).

El algoritmo contiene los siguientes pasos:


1. Crear una colección de casilleros vacíos
2. Colocar cada elemento a ordenar en un único casillero
3. Ordenar individualmente cada casillero
4. devolver los elementos de cada casillero concatenados por orden

ORDENAMIENTO POR CUENTAS


El ordenamiento por cuentas (counting sort en inglés) es un algoritmo
de ordenamiento en el que se cuenta el número de elementos de cada
clase para luego ordenarlos. Sólo puede ser utilizado por tanto para
ordenar elementos que sean contables (como los números enteros en un
determinado intervalo, pero no los números reales, por ejemplo).

El primer paso consiste en averiguar cuál es el intervalo dentro del que


están los datos a ordenar (valores mínimo y máximo). Después se crea
un vector de números enteros con tantos elementos como valores haya
en el intervalo [mínimo, máximo], y a cada elemento se le da el valor 0
(0 apariciones). Tras esto se recorren todos los elementos a ordenar y se
cuenta el número de apariciones de cada elemento (usando el vector
que hemos creado). Por último, basta con recorrer este vector para tener
todos los elementos ordenados.

También podría gustarte