El casillero del que clasifica, también conocido como clase de la cuenta del (pero ver también el el contar de la clase ), es un algoritmo de clasificación que las tomas ( Θ ( n + el N )) el tiempo, donde está el número el n de números que se clasificarán y del N es el número de " pigeonholes", o valores posibles de los números. Cuando el N es O ( n ), el algoritmo funciona en el tiempo linear (es decir, O ( n )), que el funcionamiento mejor para un algoritmo de clasificación puesto que uno debe mirar inevitable cada uno de los elementos que son clasificados por lo menos una vez, sin importar el algoritmo de clasificación.
Ver el Bucket la clase para las generalizaciones posibles del acercamiento.
Los trabajos del algoritmo del casillero como sigue. Fijar un arsenal de " inicialmente vacío; pigeonholes", un casillero para cada valor en la gama de llaves.
El constante ocultado para este algoritmo depende críticamente de la densidad de los elementos en el arsenal del casillero. Si hay muchos más elementos de arsenal que los artículos que se clasificarán, los pasos 1 y 3 serán relativamente lentos.
La clase del casillero se utiliza raramente como los requisitos se cumplen raramente y otro, más flexible, y casi como rápidamente, los algoritmos de clasificación son más fáciles de utilizar. Particularmente, la clase del cubo es una variación más práctica en la clase del casillero.
Una variante bien conocida de la clase del casillero es la clase de la cuenta; mientras que es solamente aplicable a un número muy limitado de problemas, es extensamente familiar debido a su uso en las perlas programadas del libro como ejemplo de una solución poco convencional a un sistema particular de limitaciones.
Pseudocode para una clase del casillero para los elementos distintos del N (usar el Cero-basado poniendo en un índice ):
pigeonhole_sort de la función (arsenal del a) arsenal b del var i, j (b) zero_var (* cero hacia fuera pone en orden b *) para el de i en b]: = b] +1 (* copiar los resultados de nuevo a a *) j: = 0 para el de i en el de la repetición b del mide el tiempo de a: = i j: = j+1
El pseudocode antedicho está para el caso cuando los datos son las claves de ordenación. En un caso más general cuando la llave es solamente parte de los datos, el " del truco; el de la repetición b del mide el tiempo del " de ; no trabajará. En lugar, los datos se deben acumular en los casilleros, e., usar las listas encadenadas
.
| Random links: | Granate | Ishinomaki, Miyagi | Peluche Pendergrass | Kenneth Macintosh | Isotta-Fraschini |