Question

Bienvenue. J'ai une méthode de tri radix qui utilise un tableau pour passer, mais doit avoir un autre tableau (bin) qui stockera dans une file d'attente vide. Je suis confus quant à la façon dont je voudrais faire une file d'attente pour les bacs. J'ai aussi une méthode findPlace qui trouve la place du chaque chiffre lorsqu'il a été appelé. Alors, voici ce que je suis. Quelqu'un peut-il me aider à trouver ce que je suis absent? Merci beaucoup pour votre temps.

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

J'ai aussi fait une méthode pour trouver le seau, je veux juste savoir comment je le mettrais dans un tableau, je ferais tout cela? part.add (getPlace (x, lieu));?

Était-ce utile?

La solution

Votre tableau, bin ne se comporte pas comme une file d'attente juste parce que vous voulez qu'il :) Les tableaux n'ont pas des méthodes telles que add() et remove(). Vous avez deux choix sur la façon de résoudre ce problème:

  • Programme dans la manipulation des files d'attente vous: Une file d'attente se compose d'un tableau et deux pointeurs dans ce tableau, traditionnellement appelé head et tail. Vous devriez écrire vos propres méthodes pour ajouter et supprimer, qui travaillerait avec le tableau et les pointeurs et prendre soin d'une file d'attente vide ou un débordement.

  • intégré dans la classe de la file d'attente d'utilisation Java. Il est documenté dans Javadocs de la bibliothèque. Je ne sais pas si votre mission compte pour vous de construire votre propre file d'attente, cependant.

Mise à jour avec un autre détail:

Vous avez demandé comment extraire un seul chiffre à partir d'un numéro. Il est plus facile de travailler à partir des chiffres les moins significatifs (LSD), comme suggéré dans l'article de Wikipedia. Pour ce faire:

  • Pour extraire le dernier chiffre, ne digit = number % 10 (c'est l'opération modulo). Vous obtiendrez un nombre entier compris entre 0 et 9 inclus.
  • Pour dévêtir le dernier chiffre, il suffit de diviser par 10. Ensuite, vous pouvez retirer un autre chiffre.
  • Puisque vous devez être à la recherche du n-ième dernier chiffre d'un numéro plusieurs fois, vous feriez bien de mettre cette fonctionnalité dans une méthode distincte.

Vous pouvez utiliser votre 0 à 9 pour sélectionner la bonne file d'attente pour mettre votre numéro sur.

Lorsque vous avez terminé faire la queue tous vos numéros dans les 10 seaux, vous devez les copier à partir de là de nouveau dans une liste unique. Ensuite, répétez aussi longtemps que il y a encore des chiffres dans un numéro qui n'a pas été traité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top