Un libro que tengo dice esto:escritura cubo especie en C++
a) colocar cada valor de la matriz unidimensional en una fila de la matriz de cubo basado en los dígitos del valor. Por ejemplo, 97 se coloca en la fila 7, 3 se coloca en la fila 3 y 100 se coloca en la fila 0. Esto se denomina "pase de distribución".
b) Haz un bucle en la matriz de cubetas fila por fila y copia los valores de nuevo a la matriz original. Esto se llama un "pase de recolección". El nuevo orden de los valores anteriores en la matriz unidimensional es 100, 3 y 97.
c) Repita este proceso para cada posición de dígito subsiguiente.
Tengo un montón de problemas tratando de comprender e implementar esto. Hasta ahora tengo:
void b_sort(int sarray[], int array_size) {
const int max = array_size;
for(int i = 0; i < max; ++i)
int array[i] = sarray[i];
int bucket[10][max - 1];
}
estoy pensando que con el fin de clasificarlos por unidades, decenas, centenas, etc., que pueden utilizar esta:
for(int i = 0; i < max; ++i)
insert = (array[i]/x) % 10;
bucket[insert];
donde x = 1, 10, 100, 1000, etc. Estoy totalmente perdido en cómo escribir esto ahora.
'int get_digit (número int, int dígitos) {return número/int ((std :: pow (10.0, dígitos))% 10;}' –
Eso debería funcionar bien, suponiendo que x == 1, 10, 100, .... –
Es posible que desee utilizar dígitos hexadecimales, no dígitos decimales: desplazamiento por 4 * n bits y ANDing con 0xf parece mucho más natural que usar un cálculo de módulo. –