Domanda

Benvenuti. Ho un metodo ordinamento digitale che utilizza una matrice di passare attraverso, ma deve avere un'altra matrice (bin) che memorizza in una coda vuota. Sono confuso su come avrei fatto una coda per i cassonetti. Ho anche un metodo findPlace che trova posto della ciascuna cifra quando chiamato. Quindi, ecco quello che ho ottenuto. Qualcuno può aiutarmi a trovare quello che mi manca? Grazie mille per il vostro tempo.

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;}

Ho fatto anche un metodo per trovare il secchio, quindi ho solo bisogno di sapere come lo metterei in un array, dovrei solo fare questo? part.add (getPlace (x, posto));?

È stato utile?

Soluzione

Il tuo array, bin non agisce come una coda solo perché si vuole che :) Array non hanno metodi come add() e remove(). Hai due scelte su come risolvere questo problema:

  • programma nella corretta gestione per le code te: Una coda è costituito da una matrice e due puntatori in tale matrice, tradizionalmente chiamato head e tail. Dovresti scrivere i propri metodi per aggiungere e rimuovere, che avrebbe lavorato con la matrice ei puntatori e prendersi cura di una coda vuota o uno straripante.

  • class Queue built-in Usa Java. E 'documentato nel Javadocs della biblioteca. Non so se il tuo compito intende per voi per costruire la propria coda, però.

Aggiorna con un altro particolare:

Hai chiesto come estrarre una sola cifra da un numero. E 'più facile lavorare dalle cifre meno significativi (LSD) come suggerito in questo articolo di Wikipedia. Per fare questo:

  • Per estrarre l'ultima cifra, fare digit = number % 10 (che è l'operazione di modulo). Si otterrà un intero compreso tra 0 e 9 compresi.
  • per togliere l'ultima cifra, semplicemente dividere per 10. Quindi si può tirare fuori un'altra cifra.
  • Dal momento che è necessario essere guardando l'n-esimo ultima cifra di un numero più volte, si farebbe bene a mettere questa funzionalità in un metodo separato.

È possibile utilizzare il 0-9 per selezionare la coda diritto di mettere il proprio numero su.

Quando hai finito di fare la fila tutti i numeri nelle 10 secchi, è necessario copiarli da lì di nuovo in un unico elenco. Quindi ripetere finché ci sono ancora le cifre in un numero qualsiasi che non hai elaborato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top