Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Bucket Sort
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:
Algoritmo:
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.