Pregunta

Bienvenido. Tengo un método de clasificación radix que utiliza una matriz que ir a través, pero tiene que tener otra matriz (bin) que almacenará en una cola vacía. Estoy confundido en cuanto a cómo iba a hacer una cola para los contenedores. También tengo un método findPlace que encuentra el lugar de la cada dígito cuando se le solicite. Así pues, aquí es lo que tengo. ¿Puede alguien ayudarme a encontrar lo que me falta? Muchas gracias por su tiempo.

public static void radix(int [] list){
       int [] bin = new int[10]; 
      ArrayQueue<Integer> part = new ArrayQueue<Integer>(); // EDIT What would I do with this queue?? 
      int num = 0; 
         for(int i=0;i<list.length;i++)
         {
            bin[i] = 0;  
          }

            for(int pass=0;pass<list.length;pass++)
           {
                for(int num=0;num<list.length;num++)
               {
                       int digit=findPlace(bin[pass], num);
                 }

                  bin[digit].add(list[num]); // add to the bin
            }
              // Put back into list
               for(int h=0; h<10; h++)
               {
                    while(!bin[h].isEmpty())
                    {
                       list[num] = bin[queueNum].remove();
                     num++;
                    }
              }
        }


public static int getPlace (int x, int place)
    {return x/place % 10;}

También hice un método para encontrar el cubo, por lo que sólo hay que saber cómo lo pondría en una matriz, habría que acabo de hacer esto? part.add (getPlace (x, lugar));?

¿Fue útil?

Solución

Su matriz, bin no actúa como una cola sólo porque usted quiere que :) matrices no tienen métodos como add() y remove(). Usted tiene dos opciones sobre cómo solucionar este problema:

  • Programa en el manejo adecuado de las colas de sí mismo: Una cola consiste en una matriz y dos punteros en esa matriz, llamado tradicionalmente head y tail. Habría que escribir sus propios métodos para agregar y quitar, que funcionaría con la matriz y los punteros y cuidar de una cola vacía o un uno desbordante.

  • clase de cola integrada del uso de Java. Está documentado en la biblioteca de Javadocs. No sabe si su asignación tiene la intención de que usted construya su propia cola, sin embargo.

Actualizar con otro detalle:

Se le preguntará cómo extraer un solo dígito de un número. Es más fácil trabajar desde los dígitos menos significativos (LSD) como se sugiere en el artículo de Wikipedia. Para hacer esto:

  • Para extraer el último dígito, hacer digit = number % 10 (que es la operación de módulo). Obtendrá un número entero entre 0 y 9 inclusive.
  • Para quitarse el último dígito, simplemente divida por 10. Entonces se puede sacar otro dígito.
  • Desde que tendrá que estar mirando a la enésima último dígito de un número varias veces, usted haría bien en poner esta funcionalidad en un método separado.

Puede utilizar el 0 thru 9 para seleccionar la cola derecha para poner el número en.

Cuando haya terminado de hacer cola todos sus números en los 10 cubos, tiene que copiar desde allí de nuevo en una sola lista. A continuación, repita el tiempo que todavía hay dígitos en cualquier número que no ha procesado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top