Está en la página 1de 3

Bucket Sort

¿Qué es?
Es un algoritmo de ordenamiento que distribuye todos los elementos a ordenar entre
un numero finito de casilleros.
Cada casillero solo puede contener los elementos que cumplan con unas
determinadas condiciones.
Mejor conocido como “El ordenamiento por casilleros”.
También se puede decir que (Bucket Sort) tiene variantes conocidas como algoritmo
del cartero.
Es una variante del Bucket Sort utilizada cuando los elementos a ordenar disponen
de varias claves y/o subclaves.
El nombre de este algoritmo viene del ejemplo de las oficinas postales, allí cuando
hay que clasificar una carta para que llegue a su destino primero se clasifica según
el país de destino, luego la ciudad o la región, después según la calle o el barrio de
destino, etc. Es decir, este algoritmo utiliza varias claves para hacer ordenamientos
sucesivos.
El método de Bucket Sort es un eficiente y veloz método de ordenación interno.
Es decir, se lleva a cabo completamente en memoria principal. Todos los objetos
que se ordenan caben en la memoria principal de la computadora.
Ejemplo:
Crear una colección de casilleros vacíos:

Coloca cada elemento a ordenar en un casillero único:

Ordenar individualmente cada casillero:


Devolver los elementos de cada casillero concatenados por orden:

Explicación del funcionamiento:


1. Se tiene que tener previamente los datos que se van a ordenar en un vector.
2. Se codifican los casilleros que se desean utilizar y sus intervalos.
3. Se establecen las condiciones o reglas que debe cumplir cada valor para estar
en un determinado casillero.
4. Se ordena cada casillero por separado.
5. Se asignan nuevamente los vectores al vector original.

Algoritmo:

función bucket-sort (elementos, n)


casilleros ← colección de n listas
para i = 1 hasta longitud(elementos) hacer
c ← buscar el casillero adecuado
insertar elementos[i] en casillero[c]
fin para
para i = 1 hasta n hacer
ordenar(casilleros[i])
fin para
devolver la concatenación de casilleros [1], ... casilleros[n]

Ventajas:
1. Es estable cuando existen claves iguales, se preserva el orden existente.
2. Las claves son enteros, permite ordenar valores directos en un rango
determinado, este algoritmo es eficiente cuando la cantidad de casilleros es
menor a la cantidad de claves.
3. El tiempo para clasificar los elementos es constante, las claves repetidas se
ingresan en un mismo casillero, no se hace comparaciones entre las claves.
Desventajas:
El tiempo para clasificar los elementos en el peor de los casos es O (n log n),
usualmente esto no ocurre, sin embargo, podría suceder.
Estos algoritmos necesitan una gran cantidad de memoria extra, en ocasiones se
requiere de memoria extra, los algoritmos “in situ” son los que necesitan memoria
extra pequeña y constante, al contrario de estos los que no son “in situ”, cuando
transforman las estructuras de datos necesitan una gran cantidad de memoria extra.
No es eficiente cuando la cantidad de casilleros es mayor a la cantidad de claves,
tampoco cuando el rango es desconocido. Por ejemplo, si un arreglo posee 800
enteros de cualquier valor, este algoritmo no trabajara de manera eficiente.

También podría gustarte