El ordenamiento por casilleros es un algoritmo de ordenamiento adecuado para ordenar listas de elementos en las que el número n de elementos y la longitud N del rango de posibles valores clave son aproximadamente iguales. [1] Requiere un tiempo O ( n + N ). Es similar al ordenamiento por conteo , pero se diferencia en que "mueve los elementos dos veces: una vez a la matriz de contenedores y otra vez al destino final [mientras que] el ordenamiento por conteo crea una matriz auxiliar y luego usa la matriz para calcular el destino final de cada elemento y mover el elemento allí". [2]
El algoritmo del pigeonhole funciona de la siguiente manera:
Supongamos que uno estuviera ordenando estos pares de valores por su primer elemento:
Para cada valor entre 3 y 8 creamos un casillero y luego movemos cada elemento a su casillero:
Luego, la matriz de casilleros se itera en orden y los elementos se mueven nuevamente a la lista original.
La diferencia entre la ordenación por casillero y la ordenación por conteo es que en la ordenación por conteo, la matriz auxiliar no contiene listas de elementos de entrada, solo recuentos:
Para matrices donde N es mucho mayor que n , la ordenación por cubos es una generalización que es más eficiente en el espacio y en el tiempo.